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]
热门推荐
裁员后如何处理职场关系?张三的经历给你启示
泉州的高档餐饮市场:从奈良本寿司店看泉州餐饮新趋势
跨时区旅行必备攻略:告别时差烦恼
中美时差下的高效会议安排攻略
云南博物馆,探秘古滇国,寻访南诏和大理往事
变革型领导如何影响员工心态?
替格瑞洛:心血管急救的秘密武器
替格瑞洛:心脏急救的新星?
替格瑞洛服药期间饮食禁忌全解析
替格瑞洛与氯吡格雷:一场持续十多年的药物之争
替格瑞洛:心血管健康的守护神?
解密“第六感”:从林肯的预感到科学真相
揭秘第六感:心理学背后的神秘力量
科学新发现:人类确实拥有“第六感”?
第六感:从玄学到科学的突破
当今社会夫妻分房睡是好事吗
杨贵妃的宫廷秘史:从寿王妃到悲剧结局
武则天后宫升级记:从才人到女皇的逆袭之路
爱的语言:在伴侣沟通中培养尊重与理解
西安至重庆自驾游,打卡网红景点洪崖洞
自驾游打卡秦岭与剑门关,一路奇观不容错过
西安至重庆自驾游,一路探寻历史宝藏
解锁“秒睡”技能,告别失眠焦虑,开启高效休息模式
行测逻辑判断:速解真假话问题
尿酸高也能吃肉?这份清单告诉你怎么做
2024高尿酸饮食指南:肉类怎么吃?
“文化传承·数字共享” 故宫博物院携多项数字化成果亮相数字中国建设成果展览会
赵丽颖新片预售破千万,业内却一致看衰?《乔妍的心事》能否逆袭?
如何为电子设备选择合适的电源适配器
汽车减压阀安装:专业性要求高,建议寻求专业维修人员帮助