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

【LeetCode】【算法】234.回文链表

LeetCode 234.回文链表

题目描述

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

思路

思路:

  1. 通过快慢指针找到链表的中间节点
  2. 将后半个链表进行反转
  3. 比较前半部分和后半部分链表的值是否相等

代码

/**
 * 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) {
        if (head.next == null) return true;
        // 1. 找到链表的中点
        ListNode p1 = head;
        ListNode p2 = head;
        while (p2.next != null && p2.next.next != null){
            p1 = p1.next;
            p2 = p2.next.next;
        }
        // 2. 反转链表
        ListNode prev = p1;
        p1 = p1.next;
        prev.next = null;
        while (p1 != null){
            ListNode tmp = p1.next;
            p1.next = prev;
            prev = p1;
            p1 = tmp;
        }
        // 3. 检查链表是否相同
        p1 = prev;
        p2 = head;
        while (p1 != null && p2 != null){
            if (p1.val != p2.val) return false;
            p1 = p1.next;
            p2 = p2.next;
        }
        return true;
    }
}

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

相关文章:

  • CodeQL学习笔记(5)-CodeQL for Java(AST、元数据、调用图)
  • 【万字详文介绍】:迭代扩张卷积神经网络(IDCNN)
  • 【连续多届检索,ACM出版】第四届大数据、人工智能与风险管理国际学术会议 (ICBAR 2024,11月15-17)--冬季主会场
  • Python网络爬虫:入门与实战
  • CSS中常见的两列布局、三列布局、百分比和多行多列布局!
  • 论文阅读-用于点云分析的自组织网络
  • Spring Data Redis的基本使用
  • Spring Boot 与 Vue 共铸卓越采购管理新平台
  • OpenID Connect 和 OAuth 2.0 有什么不同?
  • 揭秘rust中默认参数类型不为人知的秘密,你确定不来了解下吗?
  • Java 基于SpringBoot+Vue 的公交智能化系统,附源码、文档
  • Django Form 实现多层(嵌套)模型表单
  • 深度学习模块创作(缝合)教程|适合1-360月小宝宝食用,干货满满
  • 深度学习基础知识-损失函数
  • 【C/C++】memcpy函数的模拟实现
  • Mac OS 配置Docker+Mysql
  • C++中的继承——第一篇
  • ​CSS之三
  • 【OJ题解】C++实现字符串大数相乘:无BigInteger库的字符串乘积解决方案
  • vue中强制更新视图
  • 网络信息系统的整个生命周期
  • 服务器作业2
  • AUTOSAR COM 模块的主要功能导读以及示例
  • 【jvm】如何设置Eden、幸存者者区的比例
  • C语言 | Leetcode C语言题解之第521题最长特殊序列I
  • C++模拟实现list