题目:
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL
示例 2:
输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL
来源:https://leetcode-cn.com/problems/rotate-list
打卡:
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
if head is None:
return None
if not head.next:
return head
ring = head
count,i=1,1
while ring.next:
ring=ring.next
count+=1
ring.next=head
new_tail=head
while i < count-k%count:
new_tail=new_tail.next
i+=1
new_head=new_tail.next
new_tail.next=None
return new_head