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

LeetCode热题100--234.回文链表--简单

1. 题目

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

示例 1:
请添加图片描述
输入:head = [1,2,2,1]
输出:true

示例 2:
请添加图片描述
输入:head = [1,2]
输出:false

2. 题解

/*** 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> vals = new ArrayList<Integer>();//将链表的值复制到数组中ListNode currentNode = head;while(currentNode != null){vals.add(currentNode.val);currentNode = currentNode.next;}//使用双指针判断是否回文int front = 0;int back = vals.size() - 1;while(front < back){if (!vals.get(front).equals(vals.get(back))){return false;}front++;back--;}return true;}
}

3. 解析

官方回答:回文链表

  1. 1-4. ListNode currentNode head; while(currentNode != null) {…} - 将头节点赋值给变量currentNode,然后进入循环直到currentNode为null。

  2. 5.vals.add(currentNode.val); - 每次迭代时,都会将当前节点的值添加到列表vals中。
    6-7: front = 0; back = vals.size() - 1; - 初始化两个指针:前指针front和后指针back,分别从数组两端开始。

  3. 9-12. if (!vals.get(front).equals(vals.get(back))) { return false; } front++; back–; - 然后进入循环直到front >= back。如果前指针对应的值和后指针对应的值不相等,则返回false(因为这意味着链表不是回文)。否则,将前指针加1并减小后指针以向中间移动。

  4. 13.return true; - 如果while循环结束时没有找到两个位置上的元素不相同,那么该函数返回true,表示链表是回文的。

  5. 这段代码的时间复杂度为O(n),其中n是单链表中的节点数,因为我们需要遍历整个列表一次来将值复制到vals中。空间复杂度也为O(n),因为我们在创建一个新的ArrayList来存储所有的值。

相关文章:

  • 院校机试刷题第二天:1479 01字符串、1701非素数个数
  • 部署GraphRAG配置Neo4j实现知识图谱可视化【踩坑经历】
  • 用git下载vcpkg时出现Connection was reset时的处理
  • Yolov8的详解与实战-深度学习目标检测
  • 在Spark搭建YARN
  • [:, :, 1]和[:, :, 0] 的区别; `prompt_vector` 和 `embedding_matrix`的作用
  • Pinecone 向量数据库的连接以及增删改查操作讲解
  • 51单片机——交通指示灯控制器设计
  • Tailwind CSS 实战教程:从入门到精通
  • (C语言)超市管理系统(测试2版)(指针)(数据结构)(清屏操作)
  • UI 原型设计:交互规则的三要素——重要性、原则与实践
  • 浅析 Golang 内存管理
  • K8S redis 部署
  • nvrtc环境依赖
  • 数据库常见故障排查
  • Java GUI开发全攻略:Swing、JavaFX与AWT
  • 深入理解SpringBoot中的SpringCache缓存技术
  • 2025年PMP 学习十二 第9章 项目资源管理
  • iOS 阅后即焚功能的实现
  • “海外滴滴”Uber的Arm迁移实录:重构大规模基础设施​
  • 观察|本轮印巴冲突或促使印度空军寻求更先进战机
  • 蚊媒传染病、手足口病……上海疾控发布近期防病提示
  • 将人工智能送上太空,我国太空计算卫星星座成功发射
  • 台行政机构网站删除“汉人”改为“其余人口”,国台办回应
  • 真人秀《幸存者》百万美元奖金,25年间“缩水”近一半
  • 郑州通报涉“健康证”办理有关问题查处进展情况