Question: https://oj.leetcode.com/problems/rotate-list/
Question Name: Rotate List
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 | # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param head, a ListNode # @param k, an integer # @return a ListNode def rotateRight(self, head, k): assert k >= 0 # Empty list if head == None: return head # Compute the length of the list listLen = 0 temp = head while temp != None: temp = temp.next listLen += 1 k = k % listLen # No need to rotate if k == 0: return head # Find the last node, and the last (k+1)th node former = latter = head for _ in xrange(k): latter = latter.next while latter.next != None: latter = latter.next former = former.next # Rotate the list newHead = former.next latter.next = head former.next = None return newHead |