leet234.回文链表
题目:
请检查一个链表是否为回文链表。
进阶:
你能在 O(n) 的时间和 O(1) 的额外空间中做到吗?
分析:
- 该题不够严谨,要满足时间、空间复杂度要求,应该要求链表无环
- 回文链表要求正逆方向对应位置节点值相同
- 不考虑时间、空间复杂度,可以一次遍历链表,比较正反列表对应节点值是否一致,这样时间复杂度满足O(n),但空间复杂度为O(n)
- 为使空间复杂度满足O(1)只可以新增常数级内存空间,而链表为单向,无法逆向遍历,需要在满足O(1)空间复杂度的情况下对一半链表进行反转,以达到对原链表两端逆向遍历的目的
- 为实现上述目的,可以通过两倍速指针和单倍指针同时运动,当快速指针指向链表末端时,慢速指针会指向链表中部
- 移动慢速指针,反转链表后一半,并将慢速指针指向反转后链表的头部
- 同时移动慢速链表指针和原链表指针,比对节点值,一直到慢速指针指向空
代码:
class Solution(object):def isPalindrome(self, head):""":type head: ListNode:rtype: bool"""fast = headlow = headif not head:return Truewhile fast and fast.next:fast = fast.next.nextlow = low.nextif fast == head:return Trueif fast:low = low.nextprev = Nonecurr = lowwhile curr:curr = curr.nextlow.next = prevprev = lowlow = currlow = prevwhile low:if low.val != head.val:return Falselow = low.nexthead = head.nextreturn True
思考:
- 该代码运行效率优于leetcode中91%的case
leet234.回文链表相关推荐
- LeetCode每日一题:回文链表(No.234)
题目:回文链表 请判断一个链表是否为回文链表. 复制代码 示例: 输入: 1->2 输出: false输入: 1->2->2->1 输出: true 复制代码 思考: 先用快慢 ...
- 链表-回文链表(复制+双指针法)
题意: 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 思路: 这里如果是数组列表 ...
- 【剑指Offer专题】链表系列:从尾到头打印链表、反转链表、回文链表、合并两个排序的链表(C++和Python实现)...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 剑指Offer(三):从尾到头打印链表 输入一个链表的头节点,从尾到头反过来返回每 ...
- python回文链表_leetcode链表之回文链表
序 本文主要记录一下leetcode链表之回文链表 题目 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2-> ...
- 判断字符串_python实现--判断回文字符串、回文链表、回文数
所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构Python系列教程,免费获取,遇到bug及时反馈, ...
- 34. Leetcode 234. 回文链表 (链表-双指针)
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false .示例 1:输入:head = [1,2,2,1] 输出:true 示例 2:输入: ...
- Leetcode 234 回文链表 (每日一题 20210730)
请判断一个链表是否为回文链表.示例 1:输入: 1->2 输出: false 示例 2:输入: 1->2->2->1 输出: true题目地址:https://leetcode ...
- python 回文链表
| 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表.如果是,返回 true :否则,返回 false . 输入:head = [1,2,2,1] 输出:true 输入:he ...
- LeetCode Algorithm 面试题 02.06. 回文链表
面试题 02.06. 回文链表 Ideas 这题当时左神也讲过,用的是快慢指针,不过感觉好麻烦,不如直接遍历链表,把元素值存到数组,然后判断是不是回文数组就OK了. Code C++ class So ...
最新文章
- oracle省市表,省市之一 创建全国省市Sql表
- ospf hello时间和dead_深入理解OSPF协议----第二讲:OSPF报文类型
- Java 洛谷 P1152 欢乐的跳
- 完整mes代码(含客户端和server端_200行代码实现基于paxos的kv存储
- oracle简写sql,Oracle通过sqlplus编辑sql命令
- react学习(59)--this.props语法糖
- 【例1】 给定n(n>=1),用递归的方法计算1+2+3+4+...+(n-1)+n。
- Spring框架----Spring的依赖注入
- 使用nginx部署网站
- 蓝绿部署、滚动部署、灰度发布、金丝雀发布-概念介绍---应用部署001
- country-converter官方文档----机翻人工确认
- 切比雪夫多项式拟合 matlab,如何用matlab实现多项式拟合?要源代码
- pano2vr 缩略图添加场景名称
- nginx + tomcat 504 解决方案
- 阿里巴巴推进中国中产阶级奢侈消费
- CSS3中的元素过渡属性transition
- Mocking Techniques for Go
- oracle gi和gc的区别,gl值(gi值跟gl值有什么区别)
- Windows 11 任务栏、菜单栏无故消失解决方案
- 互联网快讯:京东公布“双11”节奏;猿辅导、掌门教育布局素质教育
热门文章
- [高通SDM450][Android9.0]CTA认证--去掉录音功能
- 鸿蒙时期人物排行榜,《永生》之战力排行榜,那些经典角色你还记得吗
- 長野の方言「ほうげん」
- VB.net 图片刷新闪烁 解决方案
- Cass10.1独立地物简码识别功能
- Linux学习之Kali制作简单的Windows的木马,创建后门
- 胡须清洗的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 《普陀区加快发展网络安全产业实施意见》的通知
- 十六进制编辑器HxD Hex Editor x64 v2.3.0.0
- vue v-for遍历动态展示元素数量