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
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 |
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public
class Solution { /** * The problem is to find the n-th nodes from end of the list.<br> * Notice that the number n may be greater than the length of the list.<br> * If this happen, we let n = n % length of the list.<br> * * @param head --The head node of the input list * @param n --An integer. * @return head of the rotated list. * @author Averill Zheng * @version 2014-06-03 * @since JDK 1.7 */ public
ListNode rotateRight(ListNode head, int
n) { ListNode newHead = null ; //calculate the length of the list if (head != null ){ int
length = 0 ; ListNode currentNode = head; while (currentNode != null ){ ++length; currentNode = currentNode.next; } n = (n < length) ? n : n % length; if (n > 0 ){ currentNode = head; ListNode tail = null ; for ( int
i = 0 ; i < length - n; ++i){ tail = currentNode; currentNode = currentNode.next; } newHead = currentNode; while (currentNode.next != null ) currentNode = currentNode.next; currentNode.next = head; tail.next = null ; } else newHead = head; } return
newHead; } } |
leetcode--Rotate List,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/averillzheng/p/3769119.html