Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
Given
1->2->3->4->5->NULL and k = 2,return
4->5->1->2->3->NULL./**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(null == head)
return null;
if(0 == k)
return head;
int len = 1;
ListNode tail = head;
while(null != tail.next){
tail = tail.next;
++len;
}
tail.next = head;
ListNode c = tail;
k %= len;
k = len - k;
while(k-- > 0){
c = c.next;
}
ListNode ret = c.next;
c.next = null;
return ret;
}
}
No comments:
Post a Comment