Given a list, rotate the list to the right by k places, where k is non-negative.
For example:
Given
return
Given
1->2->3->4->5->NULL and k = 2,return
4->5->1->2->3->NULL Solution
First, we clarify that k can be larger than the number of elements in the list, so we have to take this into account.We use two pointers that are separated by k elements.
# 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):
if head == None:
return None
temp = head
for i in range(0,k):
if temp.next == None:
temp = head
else:
temp = temp.next
newLast = head
while temp.next != None:
temp = temp.next
newLast = newLast.next
temp.next = head
newHead = newLast.next
newLast.next = None
return newHead

