Rotate List Java

来源:互联网 发布:钢结构楼梯踏步计算法 编辑:程序博客网 时间:2024/06/04 20:01

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.

Idea: dummy node
    1.find length of linkedlist of tail node
    2.local the cutting position node by n=len-n%len(handle case n >len)
    3. use dummy node to rotate right

public class Solution {    public ListNode rotateRight(ListNode head, int n) {        if(head==null || head.next==null) return head;        ListNode tail=head;        int len=1;        //tail => last element not => null        while(tail.next!=null){            tail=tail.next;            len++;        }        //check for special case       if(n==len){           return head;       }        n=len-n%len;        ListNode dummy=new ListNode(0);        dummy.next=head;        ListNode tempDummy=dummy;        //local the cutting node        for(int i=0;i<n;i++){            tempDummy=tempDummy.next;        }        //rotate right        tail.next=dummy.next;        dummy.next=tempDummy.next;        tempDummy.next=null;        return dummy.next;    }}


0 0
原创粉丝点击