【旋转链表】python
目录
题目:
思路:
代码:
题目:
思路:
- 求链表长度;
- 找出倒数第 k+1 个节点;
3.链表重整:将链表的倒数第 k+1 个节点和倒数第 k个节点断开,并把后半部分拼接到链表的头部。
代码:
class Solution: def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: if not head or not head.next: return head #求链表长度 len=0 cur=head while cur: len+=1 cur=cur.next #取模 k%=len if k==0: return head fast,slow=head,head #让fast和head保持k距离 while k: fast=fast.next k-=1 #fast向右移动到空时,slow指向倒数第k+1个节点 while fast.next: fast=fast.next slow=slow.next #新头节点应该是倒数第k个节点 new_head=slow.next #倒数第k+1个节点和k节点断开 slow.next=None #最后一个节点和原始头节点连接 fast.next=head return new_head
链接
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。