61. 旋转链表
61. 旋转链表 ->每个节点都要移动,因此想到连接到一起 1.找尾节点,形成环形链表 2.尾节点移动length-k步(又移k步==左移length-k步) 3.找到头节点,断开头尾连接 -<代码: # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next demo1: class Solution: def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: if not head or not head.next: return head # 特例判断 tail = head # tail指向head while tail.next: length+=1 tail = tail.next #记录链表长度 tail.next=head #头尾相连 k %=length # 确定移动后的位置移动 for _ in range(length-k): tail = tail.next head = tail.next tail.next = None #断开链表 return head demo2: class Solution: def rotateRight(self, head: ListNode, k: int) -> ListNode: # 若链表为空,返回head if not head: return head # 获取链表的长度 n = 0 cur = head while cur: n += 1 cur = cur.next # 若k的长度大于n,将k对n求余 k = k % n # 若k==0表示循环了一整遍,直接返回head if k == 0: return head # 创建快慢指针 slow = fast = head # fast指针先走k步 while k: fast = fast.next k -= 1 # 让fast指针走到队尾 while fast.next: fast = fast.next slow = slow.next # 此时show.next为新的链表头 new_head = slow.next # 断开slow.next slow.next = None # 链表首位相接 fast.next = head # 返回新的链表头 return new_head
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)