leetcode 70: Rotate List

Rotate ListMar 28 '12

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.

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode rotateRight(ListNode head, int n) {
        // Start typing your Java solution below
        // DO NOT write main() function
        if(head==null || n==0) return head;
        
        ListNode p=head, q=head;
        while( n-->0) {
            q=q.next;
            if( q==null) q=head;
        }
        
        if(q==head) return head;
        
        while(q.next!=null){
            q=q.next;
            p=p.next;
        }
        
        ListNode temp = p.next;
        q.next = head;
        p.next = null;
        
        return temp;    
    }
}


 

posted @ 2013-02-11 11:19  西施豆腐渣  阅读(254)  评论(0编辑  收藏  举报