算法第八天:leetcode234.回文链表

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

示例 1:

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

示例 2:

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

提示:

  • 链表中节点数目在范围[1, 105]
  • 0 <= Node.val <= 9

进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

该题的实现代码如下所示:

java 复制代码
   public boolean isPalindrome(ListNode head) {
        List<Integer> vals=new ArrayList<Integer>();
        ListNode currentNode=head;
        while(currentNode!=null){
            vals.add(currentNode.val);
            currentNode=currentNode.next;
        }
        int slow=0;
        int fast=vals.size()-1;
        while(slow<fast){
            if(!vals.get(slow).equals(vals.get(fast))){
                return false;
            }
            slow++;
            fast--;
        }
        return true;
    }

解题的思路如下:1.复制当前节点的数组到新数组vals中;

2.定义快慢指针,如果slow指针的值不等于fast指针的值,则返回false;

3.慢指针slow从起始位置向末端位置查找,而fast快指针则从末端位置向起始位置开始进行查找。

感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您有用的算法知识和启发。希望本题对大家有帮助,谢谢各位读者的支持!!!

相关推荐
Frostnova丶11 小时前
(12)LeetCode 76. 最小覆盖子串
算法·leetcode·职场和发展
淘源码d11 小时前
医学影像云PACS系统——PACS诊断工作站
java·源码·影像处理·医院管理系统·影像工作站·云pacs系统·dicom 标准通信
灯澜忆梦11 小时前
GO_函数_1
算法
言乐611 小时前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
NiceCloud喜云12 小时前
Anthropic 一周三连发:Cowork 多端、Fable 5 按需付费、J-space 论文的技术解读
java·服务器·网络·人工智能·ai
凉云生烟12 小时前
机器学习 02- KNN算法
人工智能·算法·机器学习
wabs66612 小时前
关于动态规划【力扣583.两个字符串的删除操作的思考】
算法·leetcode·动态规划
SamDeepThinking12 小时前
组合还是继承?我在项目里主要看这两个判断
java·后端·面试
可编程芯片开发12 小时前
空气流量和空气压力参数解耦系统simulink建模与仿真
算法
momo12 小时前
JAVA基础知识
java·开发语言