61 Rotate List
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def rotateRight(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
if not head:
return None
# get the length
length_list = 1
tail = head
while tail.next:
length_list += 1
tail = tail.next
# ineffective measures: if k perfectly divides the
# length, then the rotation would wrap about itself
remainder = k % length_list
if remainder == 0:
return head
go_right = length_list - remainder
iter_right = head
while go_right > 1:
go_right -= 1
iter_right = iter_right.next
tail.next = head
new_head = iter_right.next
iter_right.next = None
return new_headLast updated