首页 > 代码库 > leetcode--Rotate List
leetcode--Rotate List
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; } } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。