Rotate List
Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.
Solution
- 利用两个指针定位到需要翻转的地方。
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(head==null) return head;
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode fast = head;
ListNode slow = head;
int count;
for(count=0;fast!=null;fast=fast.next) count++;
k %= count;
if(k==0) return head;
for(fast=head;k-->0;fast = fast.next);
for(;fast.next!=null;fast=fast.next,slow=slow.next);
fast.next = dummy.next;
dummy.next = slow.next;
slow.next = null;
return dummy.next;
}
}