61. Rotate List

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if (head == null) {
return null;
}

ListNode curr = head, tail = head;
int length = 0;
while (curr != null) {
length++;
tail = curr;
curr = curr.next;
}

k = k % length;
if (k == 0) {
return head;
}

curr = head;
for (int i = 0; i < length - k - 1; i++) {
curr = curr.next;
}

ListNode newHead = curr.next;
curr.next = null;
tail.next = head;

return newHead;
}
}

References

61. Rotate List