LeetCode:(69)Rotate list(java)
阿新 • • 發佈:2018-12-14
package LeetCode_LinkedList; /** * 題目: * Given a linked list, rotate the list to the right by k places, where k is non-negative. * Example 1: * Input: 1->2->3->4->5->NULL, k = 2 * Output: 4->5->1->2->3->NULL * Explanation: * rotate 1 steps to the right: 5->1->2->3->4->NULL * rotate 2 steps to the right: 4->5->1->2->3->NULL * Example 2: * Input: 0->1->2->NULL, k = 4 * Output: 2->0->1->NULL * Explanation: * rotate 1 steps to the right: 2->0->1->NULL * rotate 2 steps to the right: 1->2->0->NULL * rotate 3 steps to the right: 0->1->2->NULL * rotate 4 steps to the right: 2->0->1->NULL */ public class RotateRight_1011_61 { public ListNode RotateRight(ListNode head, int k) { if (head == null || head.next == null) { return head; } ListNode result = new ListNode(-1); result.next = head; ListNode first = result; ListNode second =result; int length = 0; while (first.next != null) { first = first.next; length++; } for (int i = length - k % length; i > 0; i--) { second = second.next; } first.next = result.next; result.next = second.next; second.next = null; return result.next; } public static void main(String[] args) { ListNode node1 = new ListNode(0); ListNode node2 = new ListNode(1); ListNode node3 = new ListNode(2); //ListNode node4 = new ListNode(4); // ListNode node5 = new ListNode(5); node1.next = node2; node2.next = node3; node3.next = null; //node4.next = node5; RotateRight_1011_61 test = new RotateRight_1011_61(); ListNode result = test.RotateRight(node1,4); while (result != null) { System.out.print(result.val + " "); result = result.next; } } }