Skip to content

Commit c39f7d2

Browse files
add a solution for 92
1 parent 7462d41 commit c39f7d2

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/main/java/com/fishercoder/solutions/_92.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,39 @@ public ListNode reverseBetween(ListNode head, int m, int n) {
3333
pre.next = then;
3434
then = start.next;
3535
}
36-
3736
return dummy.next;
3837
}
3938
}
39+
40+
public static class Solution2 {
41+
/**
42+
* My completely original solution on 10/25/2021.
43+
*/
44+
public ListNode reverseBetween(ListNode head, int left, int right) {
45+
ListNode pre = new ListNode(-1);
46+
pre.next = head;
47+
ListNode tmp = pre;
48+
right -= left;
49+
while (left-- > 1 && tmp != null) {
50+
tmp = tmp.next;
51+
}
52+
ListNode intersection = tmp;
53+
ListNode reverseHead = tmp.next;
54+
ListNode prev = null;
55+
right++;
56+
int original = right;
57+
while (right-- > 0 && reverseHead != null) {
58+
ListNode next = reverseHead.next;
59+
reverseHead.next = prev;
60+
prev = reverseHead;
61+
reverseHead = next;
62+
}
63+
intersection.next = prev;
64+
while (original-- > 0) {
65+
intersection = intersection.next;
66+
}
67+
intersection.next = reverseHead;
68+
return pre.next;
69+
}
70+
}
4071
}

src/test/java/com/fishercoder/_92Test.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,24 @@
1212

1313
public class _92Test {
1414
private static _92.Solution1 solution1;
15+
private static _92.Solution2 solution2;
1516
private static ListNode head;
1617
private static ListNode expected;
1718

1819
@BeforeClass
1920
public static void setup() {
2021
solution1 = new _92.Solution1();
22+
solution2 = new _92.Solution2();
2123
}
2224

2325
@Test
2426
public void test1() {
2527
head = LinkedListUtils.createSinglyLinkedList(Arrays.asList(1, 2, 3, 4, 5));
2628
expected = LinkedListUtils.createSinglyLinkedList(Arrays.asList(1, 4, 3, 2, 5));
2729
assertEquals(expected, solution1.reverseBetween(head, 2, 4));
30+
31+
head = LinkedListUtils.createSinglyLinkedList(Arrays.asList(1, 2, 3, 4, 5));
32+
assertEquals(expected, solution2.reverseBetween(head, 2, 4));
2833
}
2934

3035
}

0 commit comments

Comments
 (0)