@@ -3,17 +3,34 @@ private static class ListNode {
3
3
int val ;
4
4
ListNode next ;
5
5
ListNode (int val ) { this .val = val ; }
6
+
7
+ @ Override
8
+ public String toString () {
9
+ if (next == null ) return "ListNode{val=" + val + ", next=null}" ;
10
+ return "ListNode{" +
11
+ "val=" + val +
12
+ ", next=" + next +
13
+ '}' ;
14
+ }
15
+ }
16
+
17
+ public static void main (String [] args ) {
18
+ ListNode head = new ListNode (1 );
19
+ head .next = new ListNode (2 );
20
+ head .next .next = new ListNode (3 );
21
+ head .next .next .next = new ListNode (4 );
22
+ head .next .next .next .next = new ListNode (5 );
23
+ System .out .println (reverseBetween (head , 2 , 4 ));
6
24
}
7
25
8
- public ListNode reverseBetween (ListNode head , int leftVal , int rightVal ) {
26
+ public static ListNode reverseBetween (ListNode head , int leftVal , int rightVal ) {
9
27
if (leftVal == rightVal ) return head ;
10
28
11
29
ListNode sentinelHead = new ListNode (-1000 );
12
30
sentinelHead .next = head ;
13
31
ListNode beforeLeft = getNodeBefore (sentinelHead , leftVal );
14
32
System .out .println (beforeLeft .val );
15
33
ListNode left = beforeLeft .next ;
16
- // ListNode afterRight = getNodeAfter(sentinelHead, rightVal);
17
34
ListNode a = beforeLeft .next , b = a .next , c = b .next ;
18
35
19
36
while (c != null && b .val != rightVal ) {
@@ -23,24 +40,16 @@ public ListNode reverseBetween(ListNode head, int leftVal, int rightVal) {
23
40
b = c ;
24
41
c = c .next ;
25
42
}
26
- a .next = null ;
27
43
b .next = a ;
28
44
beforeLeft .next = b ;
29
45
left .next = c ;
30
46
return sentinelHead .next ;
31
47
}
32
48
33
- private ListNode getNodeBefore (ListNode head , int value ) {
49
+ private static ListNode getNodeBefore (ListNode head , int value ) {
34
50
while (head != null && head .next != null && head .next .val != value ) {
35
51
head = head .next ;
36
52
}
37
53
return head ;
38
54
}
39
-
40
- private ListNode getNodeAfter (ListNode head , int value ) {
41
- while (head != null && head .val != value ) {
42
- head = head .next ;
43
- }
44
- return head .next ;
45
- }
46
55
}
0 commit comments