|
9 | 9 | * }
|
10 | 10 | */
|
11 | 11 | classSolution {
|
12 |
| -publicListNodereverseBetween(ListNodehead,intleft,intright) { |
13 |
| -ListNodeprev =null; |
14 |
| -ListNodestart =head; |
15 |
| -for (inti =1;i <left;i++) { |
16 |
| -prev =start; |
17 |
| -start =start.next; |
| 12 | +publicListNodereverseBetween(ListNodehead,intleft,intright) { |
| 13 | +ListNodecurr =head; |
| 14 | +ListNodeprevToLeft =null; |
| 15 | +for (inti =1;i <left;i++) { |
| 16 | +prevToLeft =curr; |
| 17 | +curr =curr.next; |
| 18 | + } |
| 19 | +ListNodenextToLeft =prevToLeft ==null ?head :prevToLeft.next; |
| 20 | +for (inti =left;i <right;i++) { |
| 21 | +curr =curr.next; |
| 22 | + } |
| 23 | +ListNodenextToRight =curr.next; |
| 24 | +curr.next =null; |
| 25 | +if (prevToLeft !=null) { |
| 26 | +prevToLeft.next =null; |
| 27 | + } |
| 28 | +ListNodereversedStart =reverse(nextToLeft); |
| 29 | +if (prevToLeft !=null) { |
| 30 | +prevToLeft.next =reversedStart; |
| 31 | + } |
| 32 | +curr =reversedStart; |
| 33 | +while (curr.next !=null) { |
| 34 | +curr =curr.next; |
| 35 | + } |
| 36 | +curr.next =nextToRight; |
| 37 | +returnprevToLeft ==null ?reversedStart :head; |
18 | 38 | }
|
19 |
| -ListNodeend =start; |
20 |
| -for (inti =left;i <right;i++) { |
21 |
| -end =end.next; |
| 39 | + |
| 40 | +privateListNodereverse(ListNodehead) { |
| 41 | +ListNodeprev =null; |
| 42 | +ListNodecurr =head; |
| 43 | +while (curr !=null) { |
| 44 | +ListNodenext =curr.next; |
| 45 | +curr.next =prev; |
| 46 | +prev =curr; |
| 47 | +curr =next; |
| 48 | + } |
| 49 | +returnprev; |
22 | 50 | }
|
23 |
| -ListNodenextToEnd =end.next; |
24 |
| -end.next =null; |
25 |
| -ListNodereverseStart =reverse(start); |
26 |
| -if (prev !=null) { |
27 |
| -prev.next =reverseStart; |
28 |
| - } |
29 |
| -ListNodecurr =reverseStart; |
30 |
| -while (curr.next !=null) { |
31 |
| -curr =curr.next; |
32 |
| - } |
33 |
| -curr.next =nextToEnd; |
34 |
| -returnprev ==null ?reverseStart :head; |
35 |
| - } |
36 |
| - |
37 |
| -privateListNodereverse(ListNodenode) { |
38 |
| -ListNodeprev =null; |
39 |
| -ListNodenext =null; |
40 |
| -ListNodecurr =node; |
41 |
| -while (curr !=null) { |
42 |
| -next =curr.next; |
43 |
| -curr.next =prev; |
44 |
| -prev =curr; |
45 |
| -curr =next; |
46 |
| - } |
47 |
| -returnprev; |
48 |
| - } |
49 | 51 | }
|