力扣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;

        
    }
}
相关推荐
VL——MOESR7 分钟前
【LuoguP1967】货车运输【生成树】【倍增】
c++·算法·题解·倍增·生成树
手写码匠9 分钟前
华为云Flexus+DeepSeek征文|Agent 记忆系统实战:用 DeepSeek-R1/V3 + Dify 会话变量打造跨会话长期记忆
人工智能·深度学习·算法·aigc
Olafur_zbj29 分钟前
【AI】CUDA编程中的维度
人工智能·算法
坚持编程的菜鸟1 小时前
模拟实现memcpy
c语言·算法·模拟实现my_memcpy
wabs6661 小时前
关于图论【最短路径之Bellman_ford 算法|卡码网94.城市间货物运输的思考】
数据结构·算法·图论·卡码网·bellman_ford·求最短路径
MrZhao4001 小时前
On-Policy Distillation(OPD):为什么大模型后训练要在学生自己的轨迹上蒸馏?
算法
朱峥嵘(朱髯)1 小时前
数据库如何根据全表 NDV 估算子集的 NDV
数据库·算法
jjjava2.02 小时前
牛客算法题(第四期)
算法
雪碧聊技术2 小时前
力扣 回溯法 | LCR 020. 回文子串
javascript·算法·leetcode
wabs6662 小时前
关于哈希表【力扣454.四数相加II的思考】
数据结构·算法·leetcode·散列表