Leetcode Hot 100刷题记录 -Day19(回文链表)

回文链表

问题描述:

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

示例 1:

复制代码
输入:head = [1,2,2,1]
输出:true

示例 2:

复制代码
输入:head = [1,2]
输出:false

解题思路:

将链表的值复制到数组列表中,再使用双指针法判断。

java 复制代码
//提交版


/**
 * 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> list = new ArrayList<>();
        ListNode curr = head;
        while (curr != null){
            list.add(curr.val);
            curr = curr.next;
        }
        int a = 0;
        int b = list.size()-1;
        while (a<b){
            if (list.get(a) != list.get(b))
                return false;
            a++;
            b--;
        }
        return true;

    }
}



//带有输入输出
import dto.ListNode;

import java.util.ArrayList;
import java.util.List;

public class hot_19isPalindrome {
    public boolean isPalindrome(ListNode head){
        List<Integer> list = new ArrayList<>();
        ListNode curr = head;
        while (curr != null){
            list.add(curr.val);
            curr = curr.next;
        }
        int a = 0;
        int b = list.size()-1;
        while (a<b){
            if (list.get(a) != list.get(b))
                return false;
            a++;
            b--;
        }
        return true;
    }

    public static void main(String[] args) {
        ListNode headA = new ListNode(1);
        headA.next = new ListNode(2);
        headA.next.next = new ListNode(2);
        headA.next.next.next = new ListNode(1);
        hot_19isPalindrome hot19isPalindrome = new hot_19isPalindrome();
        boolean result = hot19isPalindrome.isPalindrome(headA);
        System.out.println("输出:" + result);
    }
}
相关推荐
飞桨PaddlePaddle2 小时前
Wan2.1和HunyuanVideo文生视频模型算法解析与功能体验丨前沿多模态模型开发与应用实战第六期
人工智能·算法·百度·音视频·paddlepaddle·飞桨·deepseek
西瓜本瓜@2 小时前
在Android中如何使用Protobuf上传协议
android·java·开发语言·git·学习·android-studio
言之。2 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
机智的人猿泰山2 小时前
java kafka
java·开发语言·kafka
Algorithm15763 小时前
谈谈接口和抽象类有什么区别?
java·开发语言
Starry_hello world3 小时前
C++ 快速幂算法
c++·算法·有问必答
细心的莽夫3 小时前
SpringCloud 微服务复习笔记
java·spring boot·笔记·后端·spring·spring cloud·微服务
石去皿3 小时前
力扣hot100 91-100记录
算法·leetcode·职场和发展
圣保罗的大教堂5 小时前
leetcode 2799. 统计完全子数组的数目 中等
leetcode
264玫瑰资源库5 小时前
问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
java·开发语言·前端·游戏