【Hot100】LeetCode—234. 回文链表

目录

  • 1- 思路
    • 快慢指针+链表拆分+反转链表
  • 2- 实现
    • ⭐234. 回文链表——题解思路
  • 3- ACM 实现


  • 原题连接:234. 回文链表

1- 思路

快慢指针+链表拆分+反转链表

思路
①将链表拆分前后两个部分——>找拆分点②反转后面部分③根据反转结果,同时利用两个指针遍历

  • ① 找拆分点:快慢指针
    • 利用快慢指针,满指针的 next 就是 后半部分的头指针
  • ② 反转链表
    • 递归反转后半部分
  • ③ 遍历判断
    • 依次同时移动两个指针判断

2- 实现

⭐234. 回文链表——题解思路

在这里插入图片描述

/*** 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 endA = endOfA(head);boolean res = true;ListNode headB = reverseL(endA.next);ListNode curA = head;ListNode curB = headB;while(res && curB!=null){if(curA.val != curB.val){res = false;}curA = curA.next;curB = curB.next;}// 恢复 B reverseL(headB);return res;}public ListNode endOfA(ListNode head){ListNode slow = head;ListNode fast = head;while(fast.next!=null && fast.next.next!=null){slow = slow.next;fast = fast.next.next;}return slow;}public ListNode reverseL(ListNode head){if(head==null || head.next==null){return head;}ListNode cur = reverseL(head.next);head.next.next = head;head.next = null;return cur;}
}

3- ACM 实现

public class isPalindrome {public static class ListNode {int val;ListNode next;ListNode(int x) {val = x;next = null;}}public static boolean isP(ListNode head){ListNode endA = endOfA(head);// 反转ListNode headB = reverseL(endA.next);ListNode curA = head;ListNode curB = headB;boolean res = true;while(curB!=null){if(curA.val != curB.val){res = false;}curA = curA.next;curB = curB.next;}return res;}private static ListNode endOfA(ListNode head){ListNode slow = head;ListNode fast = head;while(fast.next!=null && fast.next.next!=null){slow = slow.next;fast = fast.next;}return slow;}private static ListNode reverseL(ListNode head){if(head == null || head.next==null){return head;}ListNode cur = reverseL(head.next);head.next.next = head;head.next = null;return cur;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入链表长度");int n = sc.nextInt();ListNode head = null,tail=null;for(int i = 0 ; i < n;i++){ListNode nowNode  = new ListNode(sc.nextInt());if(head==null){head = nowNode;tail = nowNode;}else{tail.next = nowNode;tail = nowNode;}}System.out.println("结果是"+isP(head));}
}

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

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

相关文章

MySQL笔记01: MySQL入门_1.3 MySQL启动停止与登录

1.3 MySQL启动停止与登录 1.3.1 MySQL启动与停止 MySQL数据库分为客户端和服务器端&#xff0c;只有服务器端服务开启以后&#xff0c;才可以通过客户端登录MySQL服务端。 首先&#xff0c;以管理员身份运行“命令提示符”&#xff1a; &#xff08;1&#xff09;启动MySQL服务…

python井字棋游戏设计与实现

python实现井字棋游戏 游戏规则&#xff0c;有三个井字棋盘&#xff0c;看谁连成的直线棋盘多谁就获胜 棋盘的展现形式为 棋盘号ABC和位置数字1-9 输入A1 代表在A棋盘1号位数下棋 效果图如下 部分源码如下&#xff1a; 卫星工纵浩 白龙码程序设计&#xff0c;点 代码获取 …

海外短剧平台的局限性与优势:做平台还是选择CPS?

随着国内短剧市场的蓬勃发展&#xff0c;越来越多的目光开始聚焦在海外市场。不少企业和个人都看到了“文化输出”的巨大潜力&#xff0c;希望通过短剧这一形式&#xff0c;吸引海外的观众。然而&#xff0c;在进入海外市场时&#xff0c;我们面临着两种主要的选择&#xff1a;…

STM32 定时器 输入捕获

用于测频率测占空比 IC(Input Capture)输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变&#xff08;上升沿/下降沿&#xff09;时&#xff0c;会让当前CNT的值将被锁存到CCR中&#xff0c;可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数…

2024年入职/转行网络安全,该如何规划?_网络安全职业规划

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…

制造企业为什么要数字化转型?面临哪些困难?

如何界定制造企业 制造业&#xff08;Manufacturing Industry&#xff09;是指机械工业时代利用某种资源&#xff08;物料、能源、设备、工具、资金、技术、信息和人力等&#xff09;&#xff0c;按照市场要求&#xff0c;通过制造过程&#xff0c;转化为可供人们使用和利用的…

坐牢第二十七天(聊天室)

基于UDP的网络聊天室 一.项目需求&#xff1a; 1.如果有用户登录&#xff0c;其他用户可以收到这个人的登录信息 2.如果有人发送信息&#xff0c;其他用户可以收到这个人的群聊信息 3.如果有人下线&#xff0c;其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…

8月16日笔记

只有DNS协议出网场景 DNS 协议是一种请求、应答协议&#xff0c;也是一种可用于应用层的隧道技术。DNS 隧道的工作原理很简单&#xff0c;在进行 DNS 查询时&#xff0c;如果查询的域名不在 DNS 服务器本机缓存中&#xff0c;就会访问互联网进行查询&#xff0c;然后返回结果。…

JavaScript基础知识(三)

样式修改 元素.style是对象的一种格式,用于通过设置元素的相关行内样式来设置css,也可以选择相关关联的样式来修改元素相关的样式. 要注意的是,选择相关的样式的时候,样式名是采用小驼峰写法而非是全部小写的方式 类名 添加类名: 元素.classList.add("classname") …

FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer

GSYVideoPlayer是一个国产的移动端视频播放器&#xff0c;它采用了IJKPlayer、Media3(EXOPlayer)、MediaPlayer、AliPlayer等四种播放器内核&#xff0c;支持弹幕、滤镜、广告等多项功能。 GSYVideoPlayer的Github主页为https://github.com/CarGuo/GSYVideoPlayer&#xff0c;截…

『Z-Workshop』 The Graph workshop mini hackathon活动

Community Meetup In Hangzhou ZJUBCA 2024 求是 创新 概述 / OVERVIEW The Graph作为一个去中心化的查询协议&#xff0c;为区块链数据的索引和查询提供了强大的支持。我们希望通过这场黑客松&#xff0c;激发大家对区块链技术更深层次的探索和应用&#xff0c;共同推动这一…

Facebook与区块链:社交网络如何融入去中心化技术

随着区块链技术的飞速发展&#xff0c;去中心化理念逐渐渗透到各个领域&#xff0c;社交网络也不例外。作为全球领先的社交平台&#xff0c;Facebook在这一趋势下开始积极探索区块链技术的潜力&#xff0c;希望利用这一前沿技术来提升平台的安全性、透明度和用户控制权。本文将…

Linux网络:基于OS的网络架构

Linux网络&#xff1a;OS视角下的网络架构 网络分层模型OSI 七层模型TCP/IP 五层模型 协议操作系统与网络网络相关命令ifconfigpingnetstat 本博客将基于操作系统&#xff0c;讲解计算机网络的设计理念&#xff0c;帮助大家理解操作系统与网络之间的关系。 网络分层模型 网络…

【AI安防】YOLOv8 + OpenVINO2023 + QT5 电子围栏预警系统

引言 电子围栏是一种利用无线通信技术和地理信息系统实现的虚拟边界&#xff0c;用于监控和控制被监控对象的位置。它可以帮助我们实现对特定区域内的自定义对象进行实时检测、定位与跟踪。本文介绍了一种基于YOLOv8 OpenVINO2023 QT5 联合打造的实时高效、多线程、自定义对…

Java使用Graphics绘制图片文字边缘出现粗糙的锯齿问题解决

为什么会出现锯齿问题 文字出现锯齿的现象通常是由于显示设备的分辨率有限&#xff0c;无法完美地表现出字符的曲线和斜线的原因。 怎么解决 可以通过Graphics2D设置抗锯齿效果 // 打开抗锯齿效果g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VAL…

【备战蓝桥杯青少组】第二天 奇特的砖墙

真题 第十四届省赛 编程题 第5题 工人砌了一面奇特的砖墙&#xff0c;该墙由N列砖组成&#xff08;1≤N≤1e6&#xff09;&#xff0c;且每列砖的数量为Ki&#xff08;1≤Ki≤1e4&#xff0c;相邻砖块之间无缝隙&#xff09;&#xff0c;每块砖的长宽高都为1。小蓝为了美化这面…

网络安全简介(入门篇)

目录 前言 一、什么是网络安全&#xff1f; 二、网络安全的重要性 1、保护数据安全和隐私 2、防止服务中断和数据丢失 3、防止经济损失和法律责任 4、维护公共安全和国家安全 5、提升技术发展和创新 三、网络安全等级保护 1、第一级&#xff08;自主保护级&#xff0…

解密!抖音百万粉丝博主三维地图视频都用到了什么GIS数据和技术

引言 在抖音上有许多诸如三维地图科普局、三维地图看世界和三维地图鉴赏等百万粉丝博主靠着三维地图科普城市、景区、人文和地理视频获赞百万&#xff0c;在我们浏览视频时犹如身临其境一般&#xff0c;那么制作这些视频需要什么GIS技术呢&#xff1f;如何利用MapMost技术自己…

2024最新50道NLP和人工智能领域面试题+答案(中文+英文双版本)

编者按&#xff1a;分享一个很硬核的免费人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 可以当故事来看&#xff0c;轻松学习。 中文版本 自然语言处理 (NLP)已成为语言学、人工智能和计算机科学交叉领域的变革性领域。随着文本数据量的不断增加&…

树莓派5 笔记26:ollama大型语言模型_中文输入法_Python_espeak文字转语音

今日继续学习树莓派5 8G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下&#xff1a; 下载大语言模型&#xff0c;下载中文输入法&#…