Leetcode-每日一题【234.回文链表】

news2024/9/27 17:32:09

题目

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

示例 1:

 

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

示例 2:

 

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

提示:

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

 

解题思路

1.首先我们利用快慢指针找到链表的中间节点,详细方法请参考【876.链表的中间节点】
2.然后我们将链表的后半部分反转,详细方法请参考【206.反转链表】

3.最后我们对原来的链表(head)和反转后的后半部分链表(reverse)从头开始遍历,结束条件为(reverse == null),在遍历的过程中,我们比较两个链表中的值,若遍历到reverse==null,两个链表中的值都相等,则说明原链表前半部分与反转后的后半部分链表相同,此链表为回文链表。

代码实现

class Solution {
    public boolean isPalindrome(ListNode head) {
      if(head == null || head.next == null){
            return true;
        }  
        ListNode mid = mid(head);
        ListNode reverse = reverse(mid);

        while(reverse != null){
            if(reverse.val != head.val){
                return false;
            }else{
                reverse = reverse.next;
                head = head.next;
            }
        }
         return true;
        


    }
    private ListNode reverse(ListNode head){
        ListNode per = null;
        ListNode cur = head;
        while(cur != null){
            ListNode curNext = cur.next;
            cur.next = per;
            per = cur;
            cur = curNext;
    }
             return per;
    }
    private ListNode mid(ListNode head){
        if(head == null || head.next == null){
            return head;
        }
        ListNode fast = head;
        ListNode slow = head;
        while(fast != null && fast.next != null){
            fast = fast.next.next;
            slow = slow.next;
        }
        return slow;
    }
    }

测试结果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Golang | runtime】runtime.Caller和runtime.Callers的使用和区别

环境&#xff1a; go version go1.18.2 1、runtime.Caller 函数func runtime.Caller(skip int) (pc uintptr, file string, line int, ok bool) 作用 获取函数Caller的调用信息 参数 skip: 0时&#xff0c;返回调用Caller的函数A的pc(program counter)、所在文件名以及Cal…

SI12T触摸按键芯片兼容TMS12资料

Si12T 是一款具有自动灵敏度校准功能的 12 通道电容传感器&#xff0c;其工作电压 范围为 1.8 ~ 5.0 V 。 Si12T 设置 IDLE 模式来节省功耗&#xff0c;此时&#xff0c;功耗电流为 3.5 A3.3V 。 Si12T 有三种特殊功能&#xff1a;一种是通道 1 上的嵌入式电源键…

体验Kubernetes(k8s),使用minikube搭建单机k8s

文章目录 一、windows&#xff1a;使用Minikube搭建单节点K8s1、安装VirtualBox2、安装kubectl3、安装minikube4、使用minikube搭建k8s 二、centos&#xff1a;使用minikube搭建单节点k8s1、安装docker2、下载kubectl&minikube与安装3、搭建单机k8s4、体验pod 一、windows&…

【计算机网络】MAC地址、IP地址、ARP协议

1.总概念 2.MAC地址 2.1 MAC地址作用 2.2 网络适配器&#xff08;网卡&#xff09; 2.3 概念 2.4 MAC地址格式 2.5 MAC地址发送顺序 单播MAC地址 广播MAC地址 多播MAC地址 随机MAC地址&#xff08;信息安全和隐私保护&#xff09; 2.6小结 3. IP地址 3.1 IP地址作用 3.2 网络…

【C#】实体类和DataTable之间相互转换,实体反射动态遍历列

在实际项目中&#xff0c;经常会用到数据之间的相互转换&#xff0c;序列化和反序列化就是常见场景。这里我们只简单聊聊实体类和DataTable之间的相互转换&#xff0c;可以用于不同业务场景使用。 目录 1、DataTable转Model2、Model转DataTable3、反射概念3.1、Type 类型3.2、A…

力扣 669. 修剪二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/trim-a-binary-search-tree/description/ C题解1&#xff1a;递归法。当前节点为空时返回空&#xff0c;不为空时对其值进行分类讨论。以low为例&#xff0c;当前节点值等于low时&#xff0c;意味着其左子树都要丢弃&#xf…

uniapp小程序进入横屏页面后竖屏页面样式错乱放大

问题描述&#xff1a;进入横屏页面后退出再进入一个竖屏页面&#xff0c;样式会错乱放大 解决方法 1.新增一个空白页&#xff0c;blank.vue <template> </template><script>export default {data() {return {}},onLoad(options) {uni.navigateBack({delta…

青岛大学_王卓老师【数据结构与算法】Week03_10_线性表的链式表示和实现10_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c;另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础–…

ASP.NET Core 中文文档 第四章 MVC(4.3)过滤器

ASP.NET MVC 过滤器 可在执行管道的前后特定阶段执行代码。过滤器可以配置为全局有效、仅对控制器有效或是仅对 Action 有效。 查看或下载演示代码. 过滤器如何工作&#xff1f; 不同的过滤器类型会在执行管道的不同阶段运行&#xff0c;因此它们各自有一套适用场景。根据你…

攻防视角下的信息收集组合拳-蓝队视角

攻防视角下的信息收集组合拳-蓝队视角 背景蓝队角度一、攻击前的信息收集1、企业资产梳理2、企业敏感文件清理 二、被攻击后的信息收集1、入侵成功信息收集技巧2、入侵失败信息收集技巧-锁定攻击IP反制技巧 背景 红蓝对抗中&#xff0c;最为重要的就是信息收集&#xff0c;无论…

国外追踪水资源短缺的6幅干旱地图

今天为大家分享国外6个干旱地图&#xff0c;这些地图使我们能够通过最新信息了解干旱的严重程度和范围。 它们通过捕捉水的可用性等关键信息&#xff0c;以便我们能够主动规划和应对干旱的影响。 全球干旱信息系统(GDIS) 地图网址&#xff1a; https://experience.arcgis.co…

HarmonyOS/OpenHarmony应用开发-Stage模型UIAbility组件使用(二)

UIAbility组件启动模式 UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景&#xff0c;系统提供了三种启动模式&#xff1a; singleton&#xff08;单实例模式&#xff09; standard&#xff08;标准实例模式&#xff09; specified&#xff0…

青少年机器人技术一级核心知识点、水平要求和考试标准

青少年机器人技术的发展已成为当今世界科技领域中备受瞩目的一项技术。机器人技术的应用范围越来越广泛&#xff0c;不仅在工业制造、医疗、教育等领域中得到广泛应用&#xff0c;同时也成为了青少年学习STEM&#xff08;科学、技术、工程、数学&#xff09;的重要内容。 为了…

错误: 字段“datlastsysoid“不存在(Navicat报错)

公司项目用到Postgres数据库&#xff0c;可视化管理工具我一般用的Navicat&#xff0c;之前也没有怎么用过Postgres数据库&#xff0c;自然对应的pgAmin工具也不是用起来也不是很友好&#xff0c;所以偷懒用Navicat&#xff0c;连接成功后&#xff0c;报错如下&#xff1a; 查…

ssm 招聘信息管理系统-计算机毕设 附源码78049

ssm 招聘客户管理系统 摘 要 由于数据库和数据仓库技术的快速发展&#xff0c;招聘客户管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。招聘客户系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的…

vue3+ ts引入天地图 搜索功能+地理区域选择

前言&#xff1a; 天地图为开发者提供应用程序开发接口和在线服务资源&#xff0c;可满足各类基于地理信息的应用开发需求。 引入 <script src"http://api.tianditu.gov.cn/api?v4.0&tk你注册的key" type"text/javascript"></script>使…

Spring容器

1. Spring核心容器介绍 问题&#xff1a;按照Bean名称获取Bean有什么弊端&#xff0c;按照Bean类型获取Bean有什么弊端&#xff1f; 1.1 创建容器 方式一&#xff1a;类路径加载配置文件 ApplicationContext ctx new ClassPathXmlApplicationContext("applicationCon…

14. 向用户推荐朋友收藏的商品

文章目录 题目需求思路一&#xff1a;使用 Except实现一实现二&#xff1a;使用 Except思路三&#xff1a;使用 full outer join where实现三实现四&#xff1a;使用 not in concat题目来源 题目需求 现请向所有用户推荐其朋友收藏但是用户自己未收藏的商品&#xff0c;请从…

阻抗计算,真的没有那么难!

问&#xff1a;什么是阻抗&#xff1f; 答&#xff1a;在具有电阻、电感和电容的电路里&#xff0c;对电路中的电流所起的阻碍作用叫做阻抗。 问&#xff1a;什么是阻抗匹配? 答&#xff1a;阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配。阻抗匹配主要有两点作用…

ubuntu git clone 失败

命令行报错如下&#xff1a; gitxxx.xx.com: Permission denied (publickey). fatal: 无法读取远程仓库。修改步骤&#xff1a; 1、.ssh权限配置问题 .ssh 文件夹权限 755 或 700 config 文件权限 644 id_rsa 文件权限 600 id_rsa.pub 文件权限 644 r&#xff1a;read 代表读…