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]
热门推荐
通风时间一般为多久?正确通风方法与注意事项
AKK菌是什么?它与人体健康有何关系?
太阳能驱动光热催化二氧化碳转化综述:从基础原理到应用前景
糖类抗原CA153是什么肿瘤指标
辽宁旅游景点:历史遗迹与自然风光交织的旅游胜地
高血压糖尿病的老人适合吃什么
青砂石和青石板是一回事吗
冠群创新风控模式的关键要素是什么?
透水砖:城市生态建设的重要元素
PLC的输入和输出信号处理
基督徒跌倒与故意犯罪:信仰与法律的碰撞
不饱和脂肪酸的综述
得了痒死人的荨麻疹,还能洗澡吗?能晒太阳吗?一文全解答咯
长期饮料当水喝,医生提醒:再馋也要管住嘴,等全身出毛病就迟了
又一项!中国“书院”被韩国申遗成功!
低谷期必看,9部找回生命力的电影!
稳健投资的选择,如何购买国债
Blender软件简介:功能强大的免费开源三维图形软件
开卷丨爱的能力 从困惑到和谐
机器视觉的概念及其功能详解
CritiCS:智能协作下的创意长篇故事生成框架 | EMNLP’24
如何评估房屋地段的价值?
投资人是如何考察团队
胜利号风帆战列舰:历史解析与辉煌战绩
万一碰到高压电线落地,为什么不能跑?究竟该如何自救?
怎么预防隐翅虫
维生素A缺乏会引起皮肤干燥吗?为什么需要补充?
肾衰竭患者的透析护理与液体管理
安全帽的使用年限是多长?
老书虫推书|5本末日废土流小说,在废墟中点燃生命的光辉