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
.
?
/** * 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 (head == null) { return null; } Stack<ListNode> stack = new Stack<ListNode>(); ListNode node = head; while (node != null) { stack.push(node); node = node.next; } k = k%stack.size(); if (k == 0) { return head; } ListNode tail = stack.peek(); for (int i = k; i > 0; i--) { node = stack.pop(); } stack.peek().next = null; tail.next = head; return node; } }
?
原文:http://hcx2013.iteye.com/blog/2221312