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

LeetCode 234.回文链表

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

思路注意链表节点个数为奇数时,2->3之间的连接没有断

代码

class Solution {
    public boolean isPalindrome(ListNode head) {
        ListNode mid = middleNode(head);
        ListNode head2 = reverseList(mid);
        // 2 -> 3 的连接没有断
        while (head2 != null) {
            if (head.val != head2.val) { // 不是回文链表
                return false;
            }
            head = head.next;
            head2 = head2.next;
        }
        return true;
    }
    // 反转链表
    private ListNode reverseList(ListNode head) {
        ListNode pre = null, cur = head;
        while (cur != null) {
            ListNode nxt = cur.next;
            cur.next = pre;
            pre = cur;
            cur = next;   
        }
        return pre;
    }
    // 寻找链表中间节点
    private ListNode middleNode(ListNode head) {
        ListNode slow = head, fast = head;
        while (fast != null && fast.next != null) {
            slow = slow.next;
            fast = fast.next.next;
        }
        return slow;
    }
}

性能

时间复杂度o(n)

空间复杂度o(1)


http://www.kler.cn/a/386774.html

相关文章:

  • docker更改数据目录
  • 批量重命名Excel文件并排序
  • JAVA:探索 EasyExcel 的技术指南
  • 贪心算法day03(最长递增序列问题)
  • 新版 idea 编写 idea 插件时,启动出现 ClassNotFound
  • Unity学习笔记(4):人物和基本组件
  • 高级java每日一道面试题-2024年10月29日-JVM篇-简述分代垃圾回收器是怎么工作的?
  • pytest简单使用
  • vue-svg-icon的安装和使用
  • Ubuntu 2004上迁移MySQL8.0的数据
  • 15分钟学 Go 第 44 天: 项目部署基础
  • 【Java学习笔记】13. I/O系统
  • 信号与噪声分析——第二节:随机变量的统计特征
  • Pr:视频效果使用详解(全集 · 2025版)
  • flutter鸿蒙next 使用 InheritedWidget 实现跨 Widget 传递状态
  • 【物联网技术】ESP8266 WIFI模块在AP模式下实现UDP与电脑/手机网络助手通信——UDP数据透传
  • 【数字图像处理】一篇搞定傅里叶变换
  • Git 入门篇(二)
  • Centos7安装Redis 远程连接
  • 【LeetCode】【算法】206. 反转链表
  • nodejs 020: React语法规则 props和state
  • 采用macvlan绕过某些软件需要MAC授权的问题
  • Mac电脑中隐藏文件(即以 . 开头的文件/文件夹)的显示和隐藏的两种方法
  • javascript实现sha512和sha384算法(支持微信小程序),可分多次计算
  • Cesium着色器的创意和方法(五——Polyline)
  • opencv保姆级讲解-guI和pymsql实现人脸识别打卡(6)