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

大连网站建设谁家好免费十大软件大全下载安装

大连网站建设谁家好,免费十大软件大全下载安装,公关做的好的网站,wordpress个人资料灵感来源 - 保持更新,努力学习 - python脚本学习 回文链表 解题思路 使用快慢指针找到链表的中间节点。反转链表的后半部分。比较前半部分和反转后的后半部分是否相同。(可选)恢复链表的原始结构。 class Solution:def isPalindrome(se…

灵感来源 

- 保持更新,努力学习

- python脚本学习

回文链表

解题思路

  1. 使用快慢指针找到链表的中间节点。
  2. 反转链表的后半部分。
  3. 比较前半部分和反转后的后半部分是否相同。
  4. (可选)恢复链表的原始结构。
    class Solution:def isPalindrome(self, head: ListNode) -> bool:if not head or not head.next:return True# 使用快慢指针找到中间节点slow, fast = head, headwhile fast.next and fast.next.next:slow = slow.nextfast = fast.next.next# 反转后半部分链表second_half = self.reverseList(slow.next)# 比较前半部分和反转后的后半部分first_ptr = headsecond_ptr = second_halfresult = Truewhile result and second_ptr:if first_ptr.val != second_ptr.val:result = Falsefirst_ptr = first_ptr.nextsecond_ptr = second_ptr.next# 恢复链表(可选)slow.next = self.reverseList(second_half)return resultdef reverseList(self, head: ListNode) -> ListNode:prev = Nonecurr = headwhile curr:next_node = curr.next  # 保存下一个节点curr.next = prev       # 反转指针prev = curr            # 移动prev指针curr = next_node       # 移动curr指针return prev

逐行解释

class Solution:def isPalindrome(self, head: ListNode) -> bool:# 处理边界情况:空链表或只有一个节点的链表是回文if not head or not head.next:return True# 步骤1:使用快慢指针找到链表的中间节点slow, fast = head, headwhile fast.next and fast.next.next:slow = slow.next      # 慢指针每次移动一步fast = fast.next.next # 快指针每次移动两步# 此时slow指针位于中间节点(奇数长度)或前半部分的最后一个节点(偶数长度)# 例如:1->2->3->2->1,slow指向3;1->2->2->1,slow指向第一个2# 步骤2:反转后半部分链表second_half = self.reverseList(slow.next)# 步骤3:比较前半部分和反转后的后半部分first_ptr = head         # 前半部分的起始指针second_ptr = second_half # 后半部分的起始指针(已反转)result = True            # 标记是否为回文while result and second_ptr:if first_ptr.val != second_ptr.val:result = Falsefirst_ptr = first_ptr.nextsecond_ptr = second_ptr.next# 步骤4:恢复链表(可选,题目不要求,但实际应用中可能需要保持链表原始结构)slow.next = self.reverseList(second_half)return resultdef reverseList(self, head: ListNode) -> ListNode:# 反转链表的辅助函数prev = Nonecurr = headwhile curr:next_node = curr.next  # 保存下一个节点curr.next = prev       # 当前节点指向前驱节点prev = curr            # 前驱节点后移curr = next_node       # 当前节点后移return prev  # 返回新的头节点

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

相关文章:

  • 做网站要固定电话seo优化教程视频
  • 增城做网站要多少钱整合营销策划
  • 个人网站前置审批项网址缩短在线生成器
  • 有哪些出名的工业设计网站seo内容优化心得
  • 网站开发的层次推广手段有哪些
  • 陕西做网站的公司地址下载班级优化大师
  • 网站seo分析网站多少钱
  • 陕西餐饮加盟网站建设成都seo优化公司
  • 平台和自建网站服务提供者网络营销怎么做
  • ug编程培训seo优化培训班
  • kloxo网站压缩网站优化排名易下拉效率
  • 管家婆免费资料网站今日疫情最新消息
  • 亚马逊网站推广怎么做seo培训学院官网
  • wordpress图片下一张seo公司杭州
  • 网站301了不知道在哪做的免费推广网站入口
  • 义乌建网站seo外包多少钱
  • 网站 app 共同架构企业信息查询
  • 自己做投票网站怎么弄策划公司一般怎么收费
  • 网站采集转载今日热搜头条
  • 网站设计公司模板下载汕头seo排名
  • 刷信誉网站怎么做百家号seo怎么做
  • 网站建设xml下载河北网站建设制作
  • 衡水做wap网站费用百度平台交易
  • 平原县网站seo优化排名百度公司地址
  • 都网站建设seo推广效果怎么样
  • 网站租用服务器公司网站的推广方案
  • 做美工的网站seo点击器
  • 平价网站平价网站建设建设成都计算机培训机构排名前十
  • 怎么上传网站图片的链接快推广app下载
  • 海南专业网站建设定制怎么制作网站教程