重温算法之回文链表

简介: 双指针法确实在很多算法题里都遇到了,其用法很普遍,掌握起来也不难,还有就是回文系列的题目都有共通点,做多了就明白里面的

微信截图_20220531173728.png

一.题目介绍


1.题目来源


链接:LeetCode


2.题目


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

示例 1:

输入:head = [1,2,2,1]

输出:true

示例 2:

输入:head = [1,2]

输出:false

 提示:

链表中节点数目在范围[1, 105]内

0 <= Node.val <= 9


二.具体实现


1.实现思路

判断是否是回文链表,第一步是需要找到中间节点,并且翻转前边节点,然后依次判断值是否相同,其思路跟做回文子串的基本相同,或者说这个回文系列的题目的思路按这种方法都能解决,下面看看具体实现。


2.实现代码


1)自己的实现方式

public boolean isPalindrome(ListNode head) {
    if (head == null || head.next == null) {
        return true;
    }
    //找到中节点
    ListNode fast = head;
    ListNode slow = head;
    while (fast.next != null && fast.next.next != null) {
        fast = fast.next.next;
        slow = slow.next;
    }
    //此时slow就是前半部分,翻转后半部分
    ListNode pre = null;
    ListNode cur = slow.next;
    while (cur != null) {
        ListNode temp = cur.next;
        cur.next = pre;
        pre = cur;
        cur = temp;
    }
    //此时的pre就是后半部分的头结点 然后判断是否值相同
    while (pre != null) {
        if (pre.val != head.val) {
            return false;
        }
        pre = pre.next;
        head = head.next;
    }
    return true;
}
复制代码


2)题友的实现方式


官方的题解:


1.复制链表值到数组列表中


2.使用双指针法判断是否为回文

微信截图_20220531200812.png


3.运行结果

微信截图_20220531200839.png

微信截图_20220531200907.png


三.题后思考


双指针法确实在很多算法题里都遇到了,其用法很普遍,掌握起来也不难,还有就是回文系列的题目都有共通点,做多了就明白里面的'套路'了。

目录
相关文章
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
69 1
|
2月前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
50 0
|
2月前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
44 0
|
2月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
32 0
|
2月前
|
存储 算法
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
【❤️算法笔记❤️】-每日一刷-21、合并两个有序链表
102 0
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
2月前
|
存储 缓存 算法
经典算法之链表篇(三)
经典算法之链表篇(三)
|
2月前
|
算法
经典算法之链表篇(二)
经典算法之链表篇(二)
|
2月前
|
算法 索引
经典算法之链表篇
经典算法之链表篇