61. 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
.
题目含义:从列表的末尾依次翻转k个元素到头部
1 public ListNode rotateRight(ListNode head, int k) { 2 if (head==null||head.next==null) return head; 3 ListNode dummy=new ListNode(0); 4 dummy.next=head; 5 ListNode fast=dummy,slow=dummy; 6 int length=0; 7 while (fast.next!=null) 8 { 9 length++; 10 fast = fast.next; 11 } 12 for (int j=length-k%length;j>0;j--) //Get the i-n%i th node 13 slow=slow.next; 14 fast.next=dummy.next; //Do the rotation 15 dummy.next=slow.next; 16 slow.next=null; 17 return dummy.next; 18 }