思路:先连成环再截断
代码:
# 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: ListNode, k: int) -> ListNode:
if not head or not head.next: return head
n = 1
cur = head
while cur and cur.next:
cur = cur.next
n += 1
k = k % n
if k == 0: return head
cur.next = head
q = n - k
cur = head
i = 0
while cur and i < q - 1:
cur = cur.next
i += 1
new_head = cur.next
cur.next = None
return new_head
'''
if not head: return head
n = 0
cur = head
while cur:
cur = cur.next
n += 1
k = k % n
if k == 0: return head
q = n - k
cur = head
i = 0
while cur and i < q - 1:
cur = cur.next
i += 1
new_head = cur.next
cur.next = None
cur = new_head
while cur and cur.next:
cur = cur.next
cur.next = head
return new_head
'''