[剑指offer 27][LeetCode234] 回文链表

偷偷刷题记录

回文链表

思路

思路1. 处理链表最粗暴的方式就是拷贝到数组中。考试时候也是,只要不会超内存,完全这么办
思路2. 快慢指针。因为我们判断是不是回文链表,回文的特性就是以中为界,两头对称。由于我们不能像使用数组一样采用中心拓展或者两边指针夹逼的方法。我们采用筛选中点与中点并反向链表比较的方式。

相比之下,第一种方式需要遍历一遍链表和一遍数组。
第二种方式,需要遍历一遍链表,翻转半个链表,再同时遍历两个半长度的链表。从耗时上说时间不变,但是不开辟额外空间。

C语言,链表转数组法

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/#define LINE 100000
bool isPalindrome(struct ListNode* head){int val[LINE];int count = 0;while (head != NULL) {val[count++] = head->val;head = head->next;}if (count == 1) {return true;}int left = 0;int right = count - 1;while (left <= right) {if (val[left++] != val[right--])return false;}return true;
}

C++ 快慢指针加链表翻转比较

class Solution {
public:bool isPalindrome(ListNode* head) {//找中点ListNode *leftMid = getMidNode(head);// 翻转右边,此时右边已经翻转了ListNode *rightReverse = getReverseNode(leftMid->next);// 回文比较while (rightReverse != nullptr) {if (head->val != rightReverse->val) {return false;}head = head->next;rightReverse = rightReverse->next;}return true;}ListNode *getReverseNode(ListNode *head) {ListNode* prev = NULL;ListNode* curr = head;while (curr) {ListNode* next = curr->next;curr->next = prev;prev = curr;curr = next;}return prev;}ListNode *getMidNode(ListNode *head) {ListNode *fast = head;ListNode *slow = head;while (fast->next != nullptr && fast->next->next != nullptr) {fast = fast->next->next;slow = slow->next;}return slow;}
};

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

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

相关文章

牛客网选择题刷题记录之Linux系统

linux运维 linux指令 下面有关linux查看系统负载的命令&#xff0c;说法错误的是&#xff1f; A. uptime命令主要用于获取主机运行时间和查询linux系统负载等信息 B. vmstat命令可以查看查看cpu负载 C. sar -n命令可以查看网络接口信息 D. free命令可以查看磁盘负载情况 答案&…

Keil_uvision_4基本使用教程

前言&#xff1a; keil uvision 5 和 4 使用方式差不多 Keil_uvision_4基本使用教程 Keil C51 V9.00 即09年发布的最新版本uVision 4&#xff0c;版本外观改变比较大 可以使用以前的注册文件如果全新安装&#xff0c;在VISTA或者WIN 7系统下…

MySQL语法看这一篇就够啦

MySQL语法看这一篇就够啦1. MySQL介绍与登录1.1 MySQL介绍1.2 Mariadb安装与启动1.2.1 在centos7环境下安装启动登录数据库操作部分增删改查&#xff1a;增 CREATE DATABASE增删改查&#xff1a;删 DROP增删改查&#xff1a;查找数据库 SHOW DATABASE使用数据库&#xff1a;use…

Python数据库:嵌入式MySQL

Python数据库&#xff1a;嵌入式MySQLPython访问MySQL的库函数PyMySQL安装PyMySQL快速上手以及代码上下文PyMySQL常见语法1. 导包2.连接数据库 connect3. 创建访问对象 cursor4. 下达命令 cursor.execute5. 接收结果 cursor.fetch*6.事务的用法7. 关闭mysql链接 closePython访问…

部门名称部门结构叠用_金属结构分公司三部门联合开展工会小组活动

为丰富职工的业余生活&#xff0c;营造轻松欢乐的氛围&#xff0c;增强部门间交流沟通&#xff0c;舒缓职工工作压力&#xff0c;在金属结构分公司工会的支持下&#xff0c;9月12日&#xff0c;分公司工程管理部、安全监管部和综合办公室联合开展工会小组活动&#xff0c;分公司…

linux环境下安装Java运行Java

Linux环境下安装与运行Java一. Linux环境下安装Java环境——最最最简单粗暴的教程二. Linux下编译Java代码---javac和java命令的使用2.1 编译单个java文件2.2 编译多个Java文件&#xff0c;每个类都在一个包中2.3 不同包编译一. Linux环境下安装Java环境——最最最简单粗暴的教…

不是区块链的特征_上市公司日照港物流区块链平台上线,不是谁都能玩“区块链+物流”?...

免责声明&#xff1a;本文旨在传递更多市场信息&#xff0c;不构成任何投资建议。文章仅代表作者观点&#xff0c;不代表火星财经官方立场。小编&#xff1a;记得关注哦投资区块链&#xff0c;猛戳&#xff1a;火星财经App下载来源&#xff1a;火星一线文 | 成文厚火星财经APP(…

lg手机历史机型_华为后,又一中国芯崛起!国际手机巨头LG都采用它的芯片了...

众所周知&#xff0c;这几年芯片火热&#xff0c;中国芯片厂商们也是受到了大家空前的关注。任何有关于中国芯的利好&#xff0c;都会被放大&#xff0c;被网友们看好。当然&#xff0c;华为是中国这些芯片企业中最强的&#xff0c;5G芯片华为也是目前最领先的&#xff0c;像巴…

Python学习笔记(6): 如何消除字符串前后中间的空白

Python如何消除字符串前后中间的空白 &#xff08;这里不使用正则表达式非常适合小白&#xff09; 相信这是很多人都会遇到的一个小问题。其实要是只想消除前后的空白。我们知道在C/C语言中只需要将字符串数组进行遍历&#xff0c;遇到非字母的值直接剔除即可。那么python要怎…

python转义引号的作用_python传到前端的数据,双引号被转义的问题

python部分def mallTemplateConfig(request):gameRole_edit request.session.get(gameRole_edit, []) #获取json串return render(request, "operationGL/mallTemplateConfig.html",{gameRole_edit: json.dumps(gameRole_edit)})html部分这样写显示正常&#xff0c;没…

Java学习资料汇总

Java语言特点和常见错误1 Java语言特点总结1.1 语言特点1.2 运行机制1.3 JVM虚拟机1.4 JRE运行环境1.5 JDK开发环境Linux下的java安装,编译,运行三大引用类型1 Java语言特点总结 这段内容来自北大唐教授的教案 1.1 语言特点 • 无直接指针操作 • 自动内存管理 • 数据类型长…

任意python版本下载,所有python版本下载的FTP路径

python的官网一般只会给出一些最常用的和最近最新发布的python版本&#xff0c;那么如何去下载任意的python版本呢。 python版本的存储是一个ftp路径&#xff0c;我们输入如下网站&#xff0c;就可以找到所有的python版本。 https://www.python.org/ftp/python

埃斯顿机器人 王杰高_埃斯顿自动化王杰高博士受邀赴韩参加“ROBOT WORLD 2016”等一系列相关活动...

10月12-13日&#xff0c;2016韩国机器人世界展览会(“ROBOT WORLD 2016”)在韩国KINTEX(一山)隆重举行。该展会由韩国机器人产业协会主办&#xff0c;是规模最为盛大的三大国际机器人展会之一。同期&#xff0c;由中国机器人产业联盟(CRIA)与韩国机器人产业协会(KAR)共同主办的…

windows环境下安装多个任意版本的python环境

windows环境下安装多个任意版本的python环境windows环境下安装多个任意版本的python环境下载Python下载pipstep1. 用get-pip下载pipstep2. 分析安装的文件step3. 使用pip得到报错" No module named pip "step4. 原因分析和解决方案其他报错1. ERROR: Could not find …

cdh 简介_CDH 1、CDH简介

1、Apache Hadoop 不足之处• 版本管理混乱• 部署过程繁琐、升级过程复杂• 兼容性差• 安全性低2、Hadoop 发行版• Apache Hadoop• Cloudera’s Distribution Including Apache Hadoop(CDH)• Hortonworks Data Platform (HDP)• MapR• EMR• …3、CDH能解决哪些问题• 10…

Windows环境下用python嵌入式环境跑程序可太方便了

Windows环境下用python嵌入式环境跑程序可太方便了1. 嵌入式包默认的文件夹设置2. 建立python环境文件夹3. 添加python索引包路径4. 安装pip和requirements5. 运行环境6. 完整的powershell install.bat 脚本之前觉得windows电脑安装的python环境太乱太不纯净&#xff0c;或者临…

python 列表 笛卡尔积_python-列表字典的笛卡尔积

python-列表字典的笛卡尔积我正在尝试编写一些代码来测试一堆输入参数的笛卡尔积。我看过itertools&#xff0c;但是它的product功能并不是我想要的。 是否有一种简单明了的简单方法来制作一个字典&#xff0c;每个字典中有任意数量的键和任意数量的元素&#xff0c;然后生成具…

2022年新版Pycharm通过project interpreter国内镜像源设置

2022年新版Pycharm通过project interpreter国内镜像源设置解决方案速览一、国内镜像源列表二、pycharm访问project interpreter解决方案速览 File->Settings->project interpreter-> -> Available Packages将options打勾&#xff0c;并输入-i https://pypi.tuna.…

git push origin master是什么意思_git 设置远端仓库

欢迎转载,但请在开头或结尾注明原文出处【blog.chaosjohn.com】 前段时间,公司开了一个新项目,买了另一家公司的源码做二次开发。 项目进行了几天后,我突然听到参与开发的几个同学在讨论,关于 “不想把我们修改的版本推给他们”。 我就顿感奇怪,买了源码还要遵循他们的开…

flink 不设置水印_从0到1学习Flink—— Flink parallelism 和 Slot 介绍

前言之所以写这个是因为前段时间自己的项目出现过这样的一个问题&#xff1a;1Caused by: akka.pattern.AskTimeoutException: 2Ask timed out on [Actor[akka://flink/user/taskmanager_0#15608456]] after [10000 ms]. 3Sender[null] sent message of type "org.apache.…