LeetCode 234. 回文链表的算法解析
创作时间:
作者:
@小白创作中心
LeetCode 234. 回文链表的算法解析
引用
CSDN
1.
https://m.blog.csdn.net/weixin_44245188/article/details/143515836
本文将介绍如何判断一个单链表是否为回文链表的算法问题。通过将链表的值复制到数组列表中,然后使用双指针法判断是否为回文,最后给出具体的Python代码实现。
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
算法一共为两个步骤:
- 复制链表值到数组列表中。
- 使用双指针法判断是否为回文。
第一步,我们需要遍历链表将值复制到数组列表中。我们用 currentNode 指向当前节点。每次迭代向数组添加 currentNode.val,并更新 currentNode = currentNode.next,当 currentNode = null 时停止循环。
执行第二步的最佳方法取决于你使用的语言。在 Python 中,很容易构造一个列表的反向副本,也很容易比较两个列表。而在其他语言中,就没有那么简单。因此最好使用双指针法来检查是否为回文。我们在起点放置一个指针,在结尾放置一个指针,每一次迭代判断两个指针指向的元素是否相同,若不同,返回 false;相同则将两个指针向内移动,并继续判断,直到两个指针相遇。
在编码的过程中,注意我们比较的是节点值的大小,而不是节点本身。正确的比较方式是:node_1.val == node_2.val,而 node_1 == node_2 是错误的。
下面是具体的Python代码实现:
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
vals = []
current_node = head
while current_node is not None:
vals.append(current_node.val)
current_node = current_node.next
return vals == vals[::-1]
热门推荐
酱油热量:调味秘籍,健康密码
蚝油会升高尿酸水平?哪些调味品不能吃了?
上海年夜饭里的家味道
粤菜师傅教你做6道经典年夜饭,让家人感受满满幸福感
小马宝莉趣影包:亲子共赏的梦幻收藏!
小马宝莉卡牌:天价投资新宠?
颠覆宇宙观:新研究揭示暗能量或不存在,宇宙以不均匀方式膨胀
为什么宇宙冷而黑?太阳的热量不足以加热空间?
宇宙膨胀的新解释:我们的宇宙正通过不断吞噬其他宇宙导致膨胀
秋冬打卡雅安:如何在蒙顶山拍出大片?
雅安必打卡:中国大熊猫保护研究中心碧峰峡基地
飞仙关:雅安的文化宝藏地
秋日自驾打卡:雅安318大本营
雅安三大自然景观:牛背山、碧峰峡、蒙顶山
保姆面试必问23个问题,帮你找到合适人选
上海打造长者运动健康之家:智能化适老化并重,助力健康老龄化
小马宝莉卡牌收藏价值大揭秘:从稀有度到市场行情全解析
叶公好龙?你是不是也这样?
叶公好龙背后的历史真相:从治水能臣到虚伪寓言
叶公治水:春秋时期的地方治理典范
心血管疾病患者的“心”理调适秘籍
世界心脏日:守护心脏健康,从预防开始
高效内存管理:让安卓手机告别卡顿!
6月,这菜使劲吃,一护眼、二清热解毒、三强免疫,别不懂吃了
秋冬漓江最美摄影点推荐
阳朔徒步漓江,解锁最美山水秘境
阳朔徒步游:海洋银杏、漓江与画山探秘
阳朔度假全攻略:住进网红酒店,玩转必打卡景点!
江苏园博园周边亲子游住宿全攻略:从高端酒店到特色民宿
探访南京扬子饭店:百年历史建筑的魅力