[LeetCode]61 Rotate List

https://oj.leetcode.com/problems/rotate-list/

http://blog.csdn.net/linhuanmars/article/details/21903027

/**
 * 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 k)
    {
        // Assume no circle in the list.
        if (head == null)
            return null;
        
        // Get the length and tail
        ListNode tail = head;
        int size = 0;
        ListNode node = head;
        while (node != null)
        {
            size ++;
            node = node.next;
            if (node != null)
                tail = node;
        }
        
        k = k % size;
        if (k == 0)
            return head;
            
        ListNode newHeadPre = head;
        for (int i = 0 ; i < size - k - 1 ; i ++)
        {
            newHeadPre = newHeadPre.next;
        }

        ListNode newHead = newHeadPre.next;
        newHeadPre.next = null;
        tail.next = head;
        return newHead;
    }
}


你可能感兴趣的:(LeetCode)