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;
        }
相关推荐
Heynchy5 小时前
ThreadLocal分析简介【Android学习】
android·学习
恋猫de小郭5 小时前
Flutter 3.38.1 之后,因为某些框架低级错误导致提交 Store 被拒
android·前端·flutter
YGGP5 小时前
【Golang】LeetCode 21. 合并两个有序链表
leetcode·链表·golang
小袁顶风作案5 小时前
leetcode力扣——135.分发糖果
算法·leetcode·职场和发展
jzlhll1235 小时前
android ViewModel传参
android
有位神秘人5 小时前
Android最新动态权限申请框架YbPermissions
android
Android-Flutter6 小时前
android compose Switch开关 使用
android·kotlin
YGGP6 小时前
【Golang】LeetCode 19. 删除链表的倒数第 N 个节点
算法·leetcode·链表
鹏程十八少6 小时前
Android 深入剖析Android内存泄漏:ViewPager2与Fragment的生命周期陷阱
android·前端·app
Kapaseker6 小时前
告别 Kotlin 中臃肿的 when 表达式
android·kotlin