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

leetcode_链表 234.回文链表

234.回文链表

  • 给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是, 返回 true ; 否则, 返回false。
  • 思路:
    1. 找到中间节点(快慢指针法)
    2. 反转后半部分的链表
    3. 比较前半部分和后半部分链表
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):def isPalindrome(self, head):""":type head: Optional[ListNode]:rtype: bool"""if not head or not head.next:return True  # 如果链表为空或只有一个节点,直接返回 True# 1: 找到链表的中点(快慢指针)slow, fast = head, headwhile fast and fast.next:slow = slow.nextfast = fast.next.next# 2: 反转后半部分链表prev = Nonewhile slow:next_node = slow.nextslow.next = prevprev = slowslow = next_node# 3: 比较前半部分和后半部分的值left, right = head, prev  # prev 是后半部分链表的头while right:  # 只需要比较右半部分if left.val != right.val:return Falseleft = left.nextright = right.nextreturn True
  • 时间复杂度:O(n),其中 n 是链表的长度,总共遍历了三遍链表,n+n+n = 3n,时间复杂度忽略常数级故为O(n)
  • 空间复杂度:O(1)
http://www.lryc.cn/news/527174.html

相关文章:

  • [Dialog屏幕开发] 屏幕绘制(下拉菜单)
  • deepseek v1手机端部署
  • CVPR 2024 无人机/遥感/卫星图像方向总汇(航空图像和交叉视角定位)
  • 【信息系统项目管理师-选择真题】2015下半年综合知识答案和详解
  • Baklib如何结合内容中台与人工智能技术实现数字化转型
  • JAVAweb学习日记(八) 请数据库模型MySQL
  • 自动驾驶---苏箐对智驾产品的思考
  • python——Django 框架
  • 计算机视觉-卷积
  • Spring Boot 自定义属性
  • C++ list 容器用法
  • 《 C++ 点滴漫谈: 二十四 》深入 C++ 变量与类型的世界:高性能编程的根基
  • C语言初阶牛客网刷题—— HJ34 图片整理【难度:中等】
  • 小盒科技携手体验家,优化智能教育服务体验,打造在线教育新高度
  • 一个简单的自适应html5导航模板
  • HttpClient学习
  • 二级 二维数组3
  • 【PyTorch][chapter 29][李宏毅深度学习]Fine-tuning LLM
  • javascript-es6 (一)
  • 数据结构——二叉树——堆(1)
  • window保存好看的桌面壁纸
  • docker安装Redis:docker离线安装Redis、docker在线安装Redis、Redis镜像下载、Redis配置、Redis命令
  • 98.1 AI量化开发:长文本AI金融智能体(Qwen-Long)对金融研报大批量处理与智能分析的实战应用
  • 【自然语言处理(NLP)】长短期记忆网络(Long - Short Term Memory,LSTM)原理和代码实现(从零实现、Pytorch实现)
  • 八股学习 微服务篇
  • TCP协议:互联网数据传输的守护者
  • 协助工具-任意门导航
  • 【MCAL实战】MCU模块配置实践
  • OpenAI 发布首个 AI 智能体
  • 【Python】导入类