当前位置: 首页 > wzjs >正文

wordpress更新计划泉州百度seo

wordpress更新计划,泉州百度seo,廊坊市三河市疫情最新情况,杭州网站建设报价一、双指针法 关键点总结 三个指针:pre(前驱)、cur(当前)、temp(临时保存) 核心操作:cur.next pre 实现指针反转 防止断链:用temp保存下一个节点 指针移动&#xff…

一、双指针法

关键点总结

  1. 三个指针pre(前驱)、cur(当前)、temp(临时保存)

  2. 核心操作cur.next = pre 实现指针反转

  3. 防止断链:用temp保存下一个节点

  4. 指针移动precur同步向前移动

  5. 返回值pre最终指向新链表的头节点

时间复杂度:O(n) - 需要遍历每个节点一次
空间复杂度:O(1) - 只使用了常数个额外变量

#(版本一)双指针法
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:cur = head    # cur指针指向当前要处理的节点,初始为头节点pre = None    # pre指针指向当前节点的前一个节点,初始为Nonewhile cur:    # 当还有节点需要处理时继续循环temp = cur.next      # 临时保存当前节点的下一个节点,防止断链后丢失cur.next = pre       # 将当前节点的next指针反向,指向前一个节点pre = cur           # pre指针向前移动,更新为当前节点cur = temp          # cur指针向前移动,指向下一个要处理的节点return pre    # 循环结束后,pre指向原链表的最后一个节点,即新链表的头节点

执行过程示例

假设原链表为:1 -> 2 -> 3 -> None

初始状态:
pre = None, cur = 1 -> 2 -> 3 -> None第1次循环:
temp = 2 -> 3 -> None    # 保存下一个节点
1 -> None               # cur.next = pre
pre = 1, cur = 2 -> 3 -> None第2次循环:
temp = 3 -> None        # 保存下一个节点  
2 -> 1 -> None          # cur.next = pre
pre = 2, cur = 3 -> None第3次循环:
temp = None             # 保存下一个节点
3 -> 2 -> 1 -> None     # cur.next = pre  
pre = 3, cur = None循环结束,返回pre = 3 -> 2 -> 1 -> None

二、递归法

算法思路

这是递归法实现链表反转,核心思想是:将反转操作分解为当前节点的反转 + 递归处理剩余节点

#(版本二)递归法
class Solution:def reverseList(self, head: ListNode) -> ListNode:# 主函数:调用递归辅助函数,初始时pre为Nonereturn self.reverse(head, None)def reverse(self, cur: ListNode, pre: ListNode) -> ListNode:# 递归终止条件:当前节点为空,说明已处理完所有节点if cur == None:return pre    # 返回pre,此时pre指向原链表的最后一个节点(新链表头节点)# 保存当前节点的下一个节点,防止断链temp = cur.next# 反转当前节点:将当前节点指向前一个节点cur.next = pre# 递归处理:继续处理下一个节点# 参数:temp(下一个要处理的节点),cur(作为下一轮的pre)return self.reverse(temp, cur)

递归执行过程示例

假设原链表为:1 -> 2 -> 3 -> None

调用栈展开过程:reverse(1->2->3->None, None)
├── temp = 2->3->None
├── 1.next = None  (1->None)
└── return reverse(2->3->None, 1->None)reverse(2->3->None, 1->None)  ├── temp = 3->None├── 2.next = 1->None  (2->1->None)└── return reverse(3->None, 2->1->None)reverse(3->None, 2->1->None)├── temp = None  ├── 3.next = 2->1->None  (3->2->1->None)└── return reverse(None, 3->2->1->None)reverse(None, 3->2->1->None)└── return 3->2->1->None  # 递归终止调用栈回溯过程:
所有递归调用都返回 3->2->1->None

关键点总结

  1. 递归参数cur(当前处理节点)、pre(前驱节点)

  2. 终止条件cur == None 时返回 pre

  3. 递归关系:处理当前节点 + 递归处理剩余节点

  4. 空间开销:每次递归调用都会占用栈空间

  5. 返回值传递:每层递归都返回最终的新头节点

优点:代码简洁,体现递归思维
缺点:空间复杂度较高,深度链表可能栈溢出

http://www.dtcms.com/wzjs/423533.html

相关文章:

  • wordpress文章发布到专题深圳搜索优化排名
  • php抽奖网站源码鸡西网站seo
  • 网站建设包括什么深圳市昊客网络科技有限公司
  • 宝安led行业网站建设seo深圳培训班
  • 装修设计公司加盟武汉百度推广seo
  • 做网站联盟国外b站推广网站
  • 网站主机与服务器今日新闻联播
  • flash网站制作单选框和复选框ui组件网站搭建步骤
  • 网站 邮件系统建设招标中国新闻
  • 网站构造下拉列表怎么做济南网站制作平台
  • 东莞网站建设优化企业网络推广是干嘛的
  • 淘宝属于什么类型的网站广州抖音推广
  • 浏览器怎么打开网站服务器连接游戏推广渠道有哪些
  • 嘉兴企业网站建设推广百度一下你就知道官页
  • 做餐饮在环保局网站备案电脑优化软件排行榜
  • 网站建设合同 附件aso优化的主要内容为
  • 网站建设验收内容西安网络推广优化培训
  • 湛江疫情最新消息seo实战指导
  • 晋中做网站公司爱站网关键词挖掘工具熊猫
  • wordpress只有我可以看优化设计六年级下册语文答案
  • 公司网站建设合同交印花税吗销售人员培训课程有哪些
  • 江西南昌电子商务网站建设公司百度seo查询工具
  • 基于web的网站设计与实现淘宝seo搜索引擎原理
  • 网站方案范文北京网讯百度科技有限公司
  • 宜春网站开发怎么在百度上添加自己的店铺地址
  • 云空间的网站如何做刷粉网站推广
  • 杭州外贸网站建设网站推广策划思路
  • 制作公司网站备案需要提供什么资料外链发布论坛
  • 便宜做网站价格百度排行榜
  • 淘宝刷单的网站建设百度企业推广怎么收费