動機
比array好多了
Problem
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 = 2Output: [4,5,1,2,3]
Example 2:
Input: head = [0,1,2], k = 4Output: [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
Sol
直接slice後面接到前面
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
now = head
size = 0
while now:
size, now = size+1, now.next
if size == 0:
return head
k = k%size
prev = head
for _ in range(size-k-1):
prev = prev.next
back_end = prev
prev = prev.next
back_end.next = None
if prev:
prev_end = prev
while prev_end.next:
prev_end = prev_end.next
prev_end.next = head
return prev
else:
return head