首页 > 其他 > 详细

【LeetCode】Rotate List

时间:2014-05-19 16:26:04      阅读:292      评论:0      收藏:0      [点我收藏+]

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.

 

start with an example.

Given [0,1,2], rotate 1 steps to the right -> [2,0,1].

Given [0,1,2], rotate 2 steps to the right -> [1,2,0].

Given [0,1,2], rotate 3 steps to the right -> [0,1,2].

Given [0,1,2], rotate 4 steps to the right -> [2,0,1].

So, no matter how big K, the number of steps is, the result is always the same as rotating K % n steps to the right.

bubuko.com,布布扣
public class Solution {
    public ListNode rotateRight(ListNode head, int n) {
        if(head==null||head.next==null||n==0)
            return head;
        int len = 0;
        ListNode root = head;
        while(root!=null){
            root=root.next;
            len++;
        }
        
        ListNode fast = head;
        ListNode slow = head;
        int i=n%len;
        if(i==0)
            return head;
        while(i>0&&fast!=null){
            fast=fast.next;
            i--;
        }
        
        while(fast.next!=null){
            slow=slow.next;
            fast=fast.next;
        }
            
        ListNode tem = slow.next;
        fast.next=head;
        slow.next=null;
        return tem;
            
        
    }
}
bubuko.com,布布扣

 

 

【LeetCode】Rotate List,布布扣,bubuko.com

【LeetCode】Rotate List

原文:http://www.cnblogs.com/yixianyixian/p/3735030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!