当前位置: 首页 > news >正文

【LeetCode 234】算法:回文链表

题目:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

提示:链表中节点数目在范围[1, 105] 内; 0 <= Node.val <= 9

image


这个题目有很多种解决方法,这里介绍我认为最简单的一个方法:使用 List 集合

算法步骤:

1. 遍历链表:首先遍历整个链表,将所有节点的值存储到 List 中。

2. 比较元素:然后使用两个指针从 List 的两端开始,向中间逐个比较元素,如果所有元素都相同,则链表是回文的。

3. 返回结果:根据比较结果返回 true 或 false。

复杂度分析:

  • 时间复杂度:O (n),其中 n 是链表的长度。因为需要遍历整个链表来填充 List,然后再次遍历 List 的一半来比较元素。

  • 空间复杂度:O (n),需要额外的空间来存储链表的所有元素。

这种方法的优点是代码简单易懂,但缺点是效率较低,尤其是对于大型链表。如果对性能有较高要求,应该使用直接操作链表节点的方法。

我的 Java 代码:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/class Solution {public boolean isPalindrome(ListNode head) {List<Integer> list = new ArrayList<>();while(head != null){list.add(head.val);head = head.next;}// i和j 初始为集合的头尾元素for(int i=0,j=list.size()-1; i<j; i++,j--){if(list.get(i) != list.get(j)){return false;}}return true;}
}
http://www.vanclimg.com/news/473.html

相关文章:

  • 开发转产品的第88天 07-28
  • 高效查日志进阶指南:掌握grep命令的完整技巧
  • CF2097F Lost Luggage 题解
  • 删除某网盘附带的“智能看图”
  • pgcenter
  • AdventureX 2025赛后感想
  • Vue2.0 兼容IE哪个版本以上吗?
  • 优雅的中间件架构实现:Rust高性能Web框架解析
  • flutter上手 - ---空白--
  • WinNTSetup 系统安装利器 v5.4.0 单文件版
  • Docker-避坑:Mysql配置
  • workbench mechanical中的接触
  • Photo Stamp Remover – 去除图片特征[Windows]
  • opencv安装验证的一个案例
  • 安装opencv
  • 记录---从零开始编写 useWindowSize Hook
  • 从一起知名线上故障,谈配置灰度发布的重要性
  • Tita 助力618: 制造业行业推行解决方案
  • kubernetes (K8S)集群安装部署
  • PyTorch边界感知上下文神经网络BA-Net在医学图像分割中的应用
  • Qt注册类对象单例与单类型区别
  • 学习笔记:RMAN CATALOG命令手动注册磁带库中的备份片
  • 《构建之法》读后感
  • 达梦增加备份作业 报错-3503 无效的函数参数
  • 读书笔记:Oracle共享池:数据库内存管理的心脏
  • Python类的定义_类和对象的关系_对象的内存模型
  • Python对2028奥运奖牌预测分析:贝叶斯推断、梯度提升机GBM、时间序列、随机森林、二元分类教练效应量化研究
  • 学习笔记:MySQL:Innodb统计信息参数
  • 库卡气体保护焊机器人省气的方法
  • 物联网技术对于农业的运营都起到了哪些作用