61. Rotate List
Medium
Given the head
of a linked list, rotate the list to the right by k
places.
Example 1:
Input: head = [1,2,3,4,5], k = 2
Output: [4,5,1,2,3]
Example 2:
Input: head = [0,1,2], k = 4
Output: [2,0,1]
Constraints:
The number of nodes in the list is in the range
[0, 500]
.-100 <= Node.val <= 100
0 <= k <= 2 * 109
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
if not head:
return
last = None
length = self.get_length(head, last)
k = k % length
if k == 0:
return head
break_index = length - k
index = 1
temp = head
prev = None
while index <= break_index:
prev = temp
temp = temp.next
index += 1
prev.next = None
start = temp
while temp.next:
temp = temp.next
temp.next = head
return start
def get_length(self, head, last):
count = 0
while head:
last = head
head = head.next
count += 1
return count
Last updated