61. Rotate List
Description
Intuition
Pitfall
// TODO: [section 1] Correct
fast.next = dummy.next;
dummy.next = slow.next;
slow.next = null;
// todo: [section 2] Incorrect when fast and slow on the same node.
dummy.next = slow.next;
fast.next = head;
slow.next = null;
For example, if the list is dummy -> 1 -> null and k = 0, where slow and fast both point to dummy.
如果执行 section 2,
- 第一步后,
dummy -> 1 -> null - 第二步后,
dummy -> 1 -> null - 第三步后,
dummy ->
容易挂在这两个case上
@Test
void testWith1And1() throws Exception {
ListNode head = ListNodes.getListOfNodes(new int[]{1});
ListNode expected = ListNodes.getListOfNodes(new int[]{1});
assertEquals(expected, solution.rotateRight(head, 1));
}
@Test
void testWith1And0() throws Exception {
ListNode head = ListNodes.getListOfNodes(new int[]{1});
ListNode expected = ListNodes.getListOfNodes(new int[]{1});
assertEquals(expected, solution.rotateRight(head, 0));
}