力扣hot100 - 234、回文链表

最近学得心好累,很烦,唯一能坚持下来的就是一天一道算法一篇博客了。

有没有真人给我点个赞啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

题目思路一:将值复制到数组中然后用双指针法

左指针右移,右指针左移,不断判断是否相同即可。

时间复杂度为o(1)空间复杂度为o(n)

不太建议该方法,实际上相当于在数组上的判断。

思路二:反转后半链表后双指针

首先我们要先找到链表的中间,然后将中间及其后面部分反转。

找到链表中间--快慢指针法:快慢指针同期点,慢指针走一步,块指针走两步,在快指针及快指针下一个元素不为空的情况下,不断往前走;最后慢指针停下来的地方就是链表中间的地方(如果是偶数个,那就是中间偏右)。

反转后半链表:见我上篇文章--反转链表

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) {

        ListNode slow = head;//慢指针
        ListNode quick = head;//块指针
        while(quick != null && quick.next!= null){
            slow = slow.next;
            quick = quick.next.next;
        }
        ListNode headb =  reverse(slow);
        ListNode heada = head;
        while(heada != null && headb != null){
            if(heada.val != headb.val)return false;

            heada = heada.next;
            headb = headb.next;
        }

        return true;
        
        
    }

    //反转链表
    public ListNode reverse(ListNode head){
        ListNode p = null;
        ListNode pp = head;
        while(pp != null){
            ListNode ppp = pp.next;
            pp.next = p;
            p = pp;
            pp = ppp;
        }
        return p;

        
    }
}
相关推荐
算法_小学生2 小时前
LeetCode 热题 100(分享最简单易懂的Python代码!)
python·算法·leetcode
Gorgous—l2 小时前
数据结构算法学习:LeetCode热题100-多维动态规划篇(不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离)
数据结构·学习·算法
熬夜造bug2 小时前
LeetCode Hot100 刷题路线(Python版)
算法·leetcode·职场和发展
2401_838472512 小时前
C++中的访问者模式
开发语言·c++·算法
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #108:将有序数组转换为二叉搜索树(递归分治、迭代法等多种实现方案详解)
算法·leetcode·二叉树·二叉搜索树·平衡树·分治法
踩坑记录2 小时前
leetcode hot100 104. 二叉树的最大深度 easy 递归dfs 层序遍历bfs
leetcode·深度优先·宽度优先
独自破碎E3 小时前
【前缀和+哈希】LCR_011_连续数组
算法·哈希算法
一条大祥脚3 小时前
26.1.26 扫描线+数论|因子反演+子序列计数|树套树优化最短路
数据结构·算法
m0_561359673 小时前
基于C++的机器学习库开发
开发语言·c++·算法