链表经典题目: 回文链表leetcode 234

一、原题回放

LeetCode 234:给定一个单向链表,判断它是否为回文链表并返回true或false。
例如下图这样一个链表,它的正序为“122”,反序为“221”,正序和反序不相同,因此我们认为其不是回文链表。
在这里插入图片描述
下图所示的链表正序和反序都是“1221”, 则我们认为它是回文链表。
在这里插入图片描述
我们需要注意的是,当链表中只有一个节点时,它的正序和反序都是第一个节点本身,当链表中不存在任何节点时,它的正序和反序都是空,所以只有一个节点的链表和没有任何节点的链表一定是回文链表。

二、思路梳理

从题目中我们知道,回文链表就是正序和反序相同的链表,因此我们可以采用依次比较链表中的第1个和第倒数第1个元素、第2个和第倒数第2个元素、第3个和第倒数第3个元素……直到比较完所有元素,只要在比较过程中有一个元素不同就认为它不是回文链表。
在这里插入图片描述
不过我们的链表单向链表,最后一个元素要遍历整个链表才能获得,在获取倒数第2个元素时又要将链表遍历一遍,如果我们的算法每次都从链表中直接遍历来获取元素进行比较的话,每次查找尾部元素的时候都要遍历整个链表,算法的时间复杂度将达到O(n^2),效率十分低下。因此我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值