Leetcode234.判断是否是回文单链表

题目描述

思路,把单链表转化为ArrayList,然后比较前后两个数是否相等。

java 复制代码
    class Solution {
        public boolean isPalindrome(ListNode head) {
            if (head == null) {
                return false;
            }
            List<Integer> valList = new ArrayList<Integer>();
            ListNode tmp = head;
            while (tmp != null) { 
                valList.add(tmp.val); //把单链表节点的数值,存储到ArrayList中,方便比较。
                tmp = tmp.next;
            }
            /**
             * 1. 只比较一半:(valList.size() - 1) / 2
             * 2. 小于等于
             */
            for (int i = 0; i <= (valList.size() - 1) / 2; i++) { //注意这里的小于等于
                if (valList.get(i) != valList.get(valList.size() - 1 - i)) {
                    return false;
                }
            }
            return true;
        }
    }

如果用双指针的写法,代码如下:

java 复制代码
        public boolean isPalindromeWithDoublePoint(ListNode head) {
            if (head == null) {
                return false;
            }
            List<Integer> valList = new ArrayList<Integer>();
            ListNode tmp = head;
            while (tmp != null) {
                valList.add(tmp.val); //把单链表节点的数值,存储到ArrayList中,方便比较。
                tmp = tmp.next;
            }

            int front = 0;
            int back = valList.size() - 1;
            while (front < back) {
                if (valList.get(front) != valList.get(back)) {
                    return false;
                }
                back--;
                front++;
            }
            return true;
        }
相关推荐
YF021114 分钟前
Protobuf与 gRPC 的关系:从理论到 Android + Go 实战通信全解析
android·后端·grpc
alphaTao14 分钟前
LeetCode 每日一题 2026/5/4-2026/5/10
算法·leetcode·职场和发展
YF021117 分钟前
Android 卡顿性能优化专项治理:从 ANR 根源到系统性重构实践
android·app
蒙奇·D·路飞-29 分钟前
Kotlin安卓app版本自动升级设计实现
android
博客zhu虎康35 分钟前
小程序按钮实现先表单校验再走手机号获取功能
android·javascript·小程序
Tisfy37 分钟前
LeetCode 3629.通过质数传送到达终点的最少跳跃次数:埃式筛+BFS
算法·leetcode·宽度优先·质数·埃式筛
码途漫谈38 分钟前
Easy-Vibe高级开发篇阅读笔记(十三)——多平台开发之Android App 原生开发
android·人工智能·笔记·ai·开源·ai编程
街灯L40 分钟前
【ADB】使用ADB工具箱卸载安卓系统软件
android·adb
赏金术士1 小时前
Kotlin 从入门到进阶 之泛型 模块(七)
android·开发语言·kotlin
大大杰哥1 小时前
leetcode hot100(2)双指针,滑动窗口
数据结构·算法·leetcode