题目:
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given1->2->3->4->5->NULLand k =2,
return4->5->1->2->3->NULL.
题意:
给定一个列表,将该列表向右旋转k个位置,其中k是非负的。
解题思路:
遍历链表得出长度,然后让链表形成环,最后找到k的位置,在他的下一位指向null,断开链表就行。
这里有个坑,就是test case 里面 k 的值会大于链表长度,所以这里我们需要对 count 取余 k = k % count;
Java代码:
public ListNode rotateRight(ListNode head, int n) {
if(head == null || n == 0 || head.next == null) {
return head;
}
ListNode dummy = head;
int count = 1;
while(dummy.next != null) {
dummy = dummy.next;
count ++;
}
//成环
dummy.next = head;
if(n > count) {
n = n % count;
}
for(int i = 0; i < count - n;i++) {
dummy = dummy.next;
}
head = dummy.next;
dummy.next = null;
return head;
}