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
No comments :
Post a Comment