1
class Solution {
2
public ListNode reverseBetween(ListNode head, int left, int right) {
3
if (left == right) return head;
4
ListNode last = null;
5
ListNode present = head;
6

7
for (int i = 0; present != null && i < left - 1; i++) {
8
last = present;
9
present = present.next;
10
}
11
ListNode finalEnd = present;
12

13
ListNode prev = last;
14
ListNode next = present.next;
15

16
for (int i = 0; present != null && i < right - left + 1; i++) {
17
present.next = prev;
18
prev = present;
19
present = next;
20
if (next != null) {
21
next = next.next;
22
}
23
}
24
if (last != null) {
25
last.next = prev;
26
} else {
27
head = prev;
28
}
29
finalEnd.next = present;
30
return head;
31
}
32
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0