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