【Leedcode】数据结构中链表必备的面试题(第三期)
【Leedcode】数据结构中链表必备的面试题(第三期)
文章目录
- 【Leedcode】数据结构中链表必备的面试题(第三期)
- 一、第一题
- 1.题目
- 2.思路
- 3.源代码
- 二、第二题
- 1.题目
- 2.思路
- (1)第一种情况:偶数个链表
- (2)第二种情况:奇数个链表
- 3.源代码
- (1)链表的中间结点的实现
- (2)反转链表的实现
- (3)链表比较函数的实现
- (4)整体源代码
- 总结
一、第一题
1.题目
CM11 链表分割 如下(示例):
现有一链表的头指针ListNode*pHead,给一定值x,
编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

2.思路
1.使用两个哨兵位的头结点lesshead和greathead,把小于4的连接到lesshead后面,大于4的链接到greathead后面;
2.再把小于4的最后一个连接到大于4的第一个:具体如下图

注意:如下图!

3.源代码
代码如下(示例):
struct ListNode {int val;struct ListNode *next;
};
class Partition {
public:ListNode* partition(ListNode* pHead, int x) {struct ListNode* lessHead, *lessTail, *greaterHead, *greaterTail;lessHead = lessTail = (struct ListNode*)malloc(sizeof(struct ListNode));greaterHead = greaterTail = (struct ListNode*)malloc(sizeof(struct ListNode));lessTail->next = greaterTail->next = NULL;struct ListNode* cur = pHead;while (cur) {if (cur->val < x) {lessTail->next = cur;lessTail = lessTail->next;}else {greaterTail->next = cur;greaterTail = greaterTail->next;}cur = cur->next;}lessTail->next = greaterHead->next;greaterTail->next = NULL;struct ListNode* list = lessHead->next;free(lessHead);free(greaterHead);return list;}
};
二、第二题
1.题目
OR36 链表的回文结构 如下(示例):
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

2.思路
(1)第一种情况:偶数个链表

(2)第二种情况:奇数个链表

3.源代码
(1)链表的中间结点的实现
- 链表的中间结点的实现 如下(示例):
struct ListNode
{int val;struct ListNode *next;
}
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow,*quick;slow=quick=head;while(quick && quick->next){slow= slow->next;quick= quick->next->next;}return slow;
}
(2)反转链表的实现
- 反转链表的实现 如下(示例):
struct ListNode
{int val;struct ListNode *next;
};
struct ListNode* reverseList(struct ListNode* head)
{//第二种方法struct ListNode* newhead=NULL;struct ListNode* cur=head;while(cur){struct ListNode* next=cur->next;cur->next=newhead;newhead=cur;cur=next;}return newhead;
}
(3)链表比较函数的实现
代码如下(示例):
class PalindromeList {
public:bool chkPalindrome(ListNode* A) {struct ListNode* mid =middleNode(A);struct ListNode* rHead =reverseList(mid);struct ListNode* curA=A;struct ListNode* curR = rHead;while( curA && curR){if(curA -> val != curR ->val){return false;}else {curA=curA->next;curR =curR-> next;}}return true;}
};
(4)整体源代码
代码如下(示例):
struct ListNode
{int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow,*quick;slow=quick=head;while(quick && quick->next){slow= slow->next;quick= quick->next->next;}return slow;
}
struct ListNode* reverseList(struct ListNode* head)
{//第二种方法struct ListNode* newhead=NULL;struct ListNode* cur=head;while(cur){struct ListNode* next=cur->next;cur->next=newhead;newhead=cur;cur=next;}return newhead;}
class PalindromeList {
public:bool chkPalindrome(ListNode* A) {struct ListNode* mid =middleNode(A);struct ListNode* rHead =reverseList(mid);struct ListNode* curA=A;struct ListNode* curR = rHead;while( curA && curR){if(curA -> val != curR ->val){return false;}else {curA=curA->next;curR =curR-> next;}}return true;}
};
总结
以上就是今天要讲的内容,本文介绍数据结构中链表必备的面试题(第三期)
如果我的博客对你有所帮助记得三连支持一下,感谢大家的支持!

相关文章:
【Leedcode】数据结构中链表必备的面试题(第三期)
【Leedcode】数据结构中链表必备的面试题(第三期) 文章目录【Leedcode】数据结构中链表必备的面试题(第三期)一、第一题1.题目2.思路3.源代码二、第二题1.题目2.思路(1)第一种情况:偶数个链表(2)第二种情况:…...
D1.Chopping Carrots (Easy Version)【数学,二分,暴力,思维】
链接 理论基础 已知正整数a,v,求证m⌊av⌋是满足⌊am⌋⩾v的最大的m,其中x是正整数已知正整数a,v,求证m\lfloor \frac {a}{v} \rfloor是满足\lfloor \frac {a}{m} \rfloor \geqslant v的最大的m,其中x是正整数已知正整数a,v,求证m⌊va⌋是满足⌊ma⌋…...
【Maven】(二)使用 Maven 创建并运行项目、聊聊 POM 中的坐标与版本号的规则
文章目录1.前言2.hello-world2.1.Archetype 创建2.2.使用 IDE 创建2.3.Maven的目录结构3.pom的基本组成3.1.Maven坐标的概念与规则3.2.版本号规则2.3.打包成可运行的JAR4.结语1.前言 本系列文章记录了从0开始到实战系统了解 Maven 的过程,Maven 系列历史文章&#…...
(考研湖科大教书匠计算机网络)第六章应用层-第六节:电子邮件
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:电子邮件(1)概述(2)举例二:简单邮件传送协议SMTP(1)SMTP基本工作…...
一、初识TypeScript、什么是类型系统
初识TypeScript、什么是类型系统 快速上手TypeScript 安装方式: > npm install -g typescriptTypeScript是JavaScript类型的超集,包含JS的所有语法,它可以编译成纯JavaScript。 意味着,纯js代码可以在.ts后缀名文件中编译 …...
一文了解什么是字节对齐(超详细)
什么是字节对齐 1.空类 class A {}对空类做sizeof()计算时应当等于1 2.带虚函数的类 如果有一个类,包含两个32位整型的数据成员,一个普通成员函数,还有一个virtual虚函数,在32位机器上,这个…...
Java无法通过形参设置为null改变实参
文章目录问题描述问题例子问题分析问题描述 在实际业务开发过程中,我们会把实参传递给形参,在方法体内对引用对象进行构建或者修改,从而改变实参,因为对形参对象属性修改时,实参对象也会随着改变,详情请看&…...
GEE:样本点选择教程
本文记录了在GEE平台上标记样本的技巧和代码脚本,样本点可以用来做土地利用分类、植被提取、水藻提取、冰川提取、农作物提取等应用中。可以应用到的方法包括随机森林(RF)分类,支持矢量机(SVM)分类…...
3.知识图谱相关学习资料汇总,提供系统化的知识图谱学习路径。一份详细的指南,补全你知识的漏洞
目录 理论及论文图谱及数据集工具及服务白皮书及报告机构及人物视频课程专栏合集评测竞赛项目案例推广技术文章1. 整体概念架构 随着知识图谱的发展,与之相关的概念也越来越多,在阅读论文时先准确的把握该论文所要解决问题处于的层级或者位置对于更好的理解论文也比较有帮助…...
TypeScript学习笔记(一)编译环境、数据类型、函数类型、联合类型
文章目录编译环境基本类型函数类型函数重载联合类型和函数重载编译环境 TypeScript最终会被编译成JavaScript来运行,所以我们需要搭建对应的环境。 首先我们要全局安装typescript # 安装命令 npm install typescript -g # 查看版本 tsc --version⭐️ 方式一&…...
为什么要移除数据库物理外键?
在最早接触数据库的时候,会接触数据库三范式,在表和表之间有关系的时候,需要使用外键添加约束 外键的好处: 1、由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据…...
Linux 计划任务讲解
目录 计划任务 一次性计划任务 长期性计划任务 计划任务 管理员可以编辑自己的和普通用户的计划任务 普通用户只可以编辑自己的计划任务 计划任务根据执行方式分为一次性计划任务、长期性计划任务 一次性计划任务 此计划只执行一次,执行后或就不会再执行了 通…...
Qt智能指针模板类的使用方式和区别总结
问题描述: 前面有篇文章,写了我建议在函数中new一个指针的时候最好使用QPointer模板类,这样就可以不用后面再加detele pointer的清除操作。当时觉得用QPointer的原因主要是QScopedPointer和QSharedPointer这两个类写起来太长了,费劲。所以觉得QPointer挺好的。 不过,看到…...
【STL】模拟实现vector
目录 1、基本成员变量 2、默认成员函数 构造函数 析构函数 拷贝构造函数 赋值运算符重载函数 3、容器访问相关函数接口 operator [ ]运算符重载 迭代器 范围for 4、vector容量和大小相关函数 size和capacity reserve扩容 resize swap交换数据 empty 5、修…...
Window 的 PHP XAMPP 安装 mongodb 的扩展
需要安装的扩展为:extensionphp_mongodb.dll根据官方的指引:PHP: Installing the MongoDB PHP Driver on Windows - Manual 1需要到 GitHub 上下载扩展,然后进行安装。这里的版本选择有些讲究。首先1.51 是 mongoDB 的驱动版本号,…...
Codeforces Round #849 (Div. 4)(E~G)
A~D比较简单就不写了,哎嘿E. Negatives and Positives给出一个数组a,可以对数组进行若干次操作,每次操作可以将相邻的两个数换为它们的相反数,求进行若干次操作之后能得到数组和的最大值是多少。思路:最大的肯定是把负…...
网易云音乐财报解读:收入大增亏损收窄,“云村”草长莺飞
独家版权时代结束后,在线音乐产业进入了新的发展阶段,各家音乐平台经营状况备受关注。 2月23日,网易云音乐公布了2022年全年财务业绩。财报显示,网易云音乐2022年全年收入为90亿元,较2021年同比增长28.5%。 值得一提的…...
MariaDB-10.8.6安装+主从搭建
【系统版本】CentOS 7.x Linux version 3.10.0-1062.18.1.el7.x86_64【检查系统是否安装过Mysql|mariadb】【查看是否安装Mysql|mariadb】#搜索mysql rpm -qa|grep mysql #搜索mariadb rpm -qa|grep mariadb #搜索MariaDB rpm -qa|grep MariaDB #如果安装过Mysql|mariadb&#…...
Win11系统user profile service服务登录失败解决方法
Win11系统user profile service服务登录失败解决方法分享。有用户在使用电脑的时候遇到了一些问题,系统的user profile service服务无法登录了。出现这个问题可能是系统文件损坏,或者中了病毒。接下来我们一起来看看如何解决这个问题的操作方法分享吧。 …...
Solon2 之基础:四、应用启动过程与完整生命周期
串行的处理过程(含六个事件扩展点 两个函数扩展点),代码直接、没有什么模式。易明 提醒: 启动过程完成后,项目才能正常运行(启动过程中,不能把线程卡死了)AppBeanLoadEndEvent 之前…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
