立冬特辑-----链表OJ题优选合集~~


目录

​​​​​​​前言🌳

1.链表中倒数第k个结点🌸

1.1 思路

1.2 代码

2. 链表的回文结构🪸

2.1 思路

2.2 代码

3.相交链表🌪️

3.1 思路

3.2 代码

4.环形链表I🌊🛳️

4.1 思路

4.2 代码

4--->5过渡:拓展思考🧐💭

5.环形链表II🏥🚑

5.1 思路

5.2 代码

6.随机链表的复制👊🤡

6.1 思路​编辑

6.2 代码

后语🍻


前言🌳

之前,我们已经将链表部分的知识了解学习的差不多了,那么没有题目来练练手算个什么事⁉️必需给大家安排上,小江优选---保质又保量‼️


1.链表中倒数第k个结点🌸

链表中倒数第k个结点_牛客题霸_牛客网


1.1 思路


忘记之前的题目的同学,可以看看这篇博客:

学习笔记---看完就会的单链表的应用~~-CSDN博客文章浏览阅读119次,点赞36次,收藏16次。小链表的尾节点指向大链表的第一个节点(不是指向哨兵位)https://blog.csdn.net/2301_79184587/article/details/134049599

1.2 代码


2. 链表的回文结构🪸

链表的回文结构_牛客题霸_牛客网


2.1 思路


2.2 代码

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {public:bool chkPalindrome(ListNode* A) {if (A == NULL) {return NULL;//空链表}ListNode* n1, *n2, *n3,*cur1,*cur2;n1 = NULL;n2 = A;n3 = A->next;while (n2) {n2->next = n1; n1 = n2;n2 = n3;if (n3) {n3 = n3->next;//注意空指针}}cur1=A,cur2=n1;//比较while(cur1&&cur2){if(cur1->val==cur2->val){cur1=cur1->next;cur2=cur2->next;}else {return false;}}return true;}
};

/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) : val(x), next(NULL) {}
};*/
class PalindromeList {public:bool chkPalindrome(ListNode* A) {if (A == NULL) {return NULL;//空链表}ListNode* slow,*fast;slow=fast=A;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;}ListNode* n1, *n2, *n3,*cur1,*cur2;n1 = NULL;n2 = slow;n3 = slow->next;while (n2) {n2->next = n1; n1 = n2;n2 = n3;if (n3) {n3 = n3->next;//注意空指针}}cur1=A,cur2=n1;//比较while(cur1&&cur2){if(cur1->val==cur2->val){cur1=cur1->next;cur2=cur2->next;}else {return false;}}return true;}
};

3.相交链表🌪️

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


3.1 思路


3.2 代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//遍历判断是否相交struct ListNode* cur1=headA;struct ListNode* cur2=headB;int count1=1,count2=1;
//长度都少一,但相减之后不影响--->但是要想计数准确,我们也可以从1开始计数
//不能用cur1和cur2遍历,因为我们要找到尾节点的地址判断是否相交,否则到cur1和cur2都为NULL的时候,循环结束,尾节点的地址就找不到了while(cur1->next){count1++;cur1=cur1->next;}while(cur2->next){count2++;cur2=cur2->next;}if(cur1!=cur2){return NULL;}//到这里,就是相交了-->计算差值int D_value=abs(count1-count2);//假设法struct ListNode* longlist=headA,* shortlist=headB;if(count1<count2){longlist=headB;shortlist=headA;}//长链表走差值+齐头并进while(D_value--){longlist=longlist->next;}while(longlist!=shortlist){longlist=longlist->next;shortlist=shortlist->next;}return longlist;
}

4.环形链表I🌊🛳️

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


4.1 思路




4.2 代码


4--->5过渡:拓展思考🧐💭

前提:带环链表

1.slow一次1步,fast一次2步,一定能相遇吗?

​​​​​​​​​​​​​​2.slow一次1步,fast一次3步,一定能相遇吗?

​​​​​​​​​​​​​​3.slow一次m步,fast一次n步,一定能相遇吗?

1.slow一次1步,fast一次2步,一定能相遇吗?

​​​​​​​​​​​​​​2.slow一次1步,fast一次3步,一定能相遇吗?

​​​​​​​​​​​​​​3.slow一次m步,fast一次n步,一定能相遇吗?


5.环形链表II🏥🚑

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


5.1 思路


5.2 代码


6.随机链表的复制👊🤡

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


6.1 思路



6.2 代码

/*** Definition for a Node.* struct Node {*     int val;*     struct Node *next;*     struct Node *random;* };*/struct Node* copyRandomList(struct Node* head) {if(head==NULL){return NULL;}struct Node* cur=head;//插入到原链表while(cur){struct Node* copy=(struct Node*)malloc(sizeof(struct Node));copy->val=cur->val;copy->next=cur->next;cur->next=copy;cur=cur->next->next;}cur=head;while(cur){struct Node* copy=cur->next;if(cur->random==NULL){copy->random=NULL;}else{copy->random=cur->random->next;}cur=cur->next->next;}cur=head;struct Node* newhead,* tail;newhead=tail=NULL;while(cur){struct Node* copy=cur->next;struct Node* next=copy->next;if(newhead==NULL){newhead=tail=copy;}else{tail->next=copy;tail=tail->next;}cur->next=next;cur=cur->next;}return newhead;
}

后语🍻

本次的分享到这里就结束了!!!

PS:小江目前只是个新手小白。欢迎大家在评论区讨论哦!有问题也可以讨论的!

如果对你有帮助的话,记得点赞👍+收藏⭐️+关注➕

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

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

相关文章

Redis(三)

4、分布式锁 4.1 、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路 那么…

HTTP-FLV详解及分析

文章目录 前言一、HTTP-FLV 简介1、市场上使用 http-flv 的商家2、http-flv、rtmp 和 hls 直播的优缺点3、http-flv 技术实现 二、Nginx 配置 http-flv1、Windows 安装 nginx&#xff0c;已经集成 nginx-http-flv-module2、nginx.conf 配置文件3、运行 nginx 服务器4、ffmpeg 推…

FiRa标准——MAC实现(二)

在IEEE 802.15.4z标准中&#xff0c;最关键的就是引入了STS&#xff08;加扰时间戳序列&#xff09;&#xff0c;实现了安全测距&#xff0c;大大提高了测距应用的安全性能。在FiRa的实现中&#xff0c;其密钥派生功能是非常重要的一个部分&#xff0c;本文首先对FiRa MAC中加密…

MeterSphere 任意文件读取漏洞(CVE-2023-25814)

MeterSphere 任意文件读取漏洞&#xff08;CVE-2023-25814&#xff09; 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: title"MeterSphere" 漏洞复现1. 构造poc2. 发送数据包3. 查看文件 免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地…

Python异常处理:三种不同方法的探索与最佳实践

Python异常处理&#xff1a;三种不同方法的探索与最佳实践 前言 本文旨在探讨Python中三种不同的异常处理方法。通过深入理解各种异常处理策略&#xff0c;我们可以更好地应对不同的编程场景&#xff0c;选择最适合自己需求的方法。 异常处理在编程中扮演着至关重要的角色。合…

吴恩达《机器学习》7-1->7-4:过拟合问题、代价函数、线性回归的正则化、正则化的逻辑回归模型

一、过拟合的本质 过拟合是指模型在训练集上表现良好&#xff0c;但在新数据上的泛化能力较差。考虑到多项式回归的例子&#xff0c;我们可以通过几个模型的比较来理解过拟合的本质。 线性模型&#xff08;欠拟合&#xff09;&#xff1a; 第一个模型是一个线性模型&#xff0…

云效流水线docker部署 :node.js镜像部署VUE项目

文章目录 引言I 流水线配置1.1 项目dockerfile1.2 Node.js 镜像构建1.3 docker 部署引言 云效流水线配置实现docker 部署微服务项目:https://blog.csdn.net/z929118967/article/details/133687120?spm=1001.2014.3001.5501 配置dockerfile-> 镜像构建->docker部署。 …

使用jdk21预览版 --enable-preview

异常 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sb3: Compilation failure [ERROR] --enable-preview 一起使用时无效 [ERROR] &#xff08;仅发行版 21 支持预览语言功能&#xff09; 解决…

已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够

解决&#xff1a; ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... /opt/module/zookeeper-3.4.10/bin/zkServer.sh: 第 182 行:kill: (4149) - 不允许的操作 rm: 无法删除"/opt/module/zooke…

SparkSQL语法优化

SparkSQL在整个执行计划处理的过程中&#xff0c;使用了Catalyst 优化器。 1 基于RBO的优化 在Spark 3.0 版本中&#xff0c;Catalyst 总共有 81 条优化规则&#xff08;Rules&#xff09;&#xff0c;分成 27 组&#xff08;Batches&#xff09;&#xff0c;其中有些规则会被归…

JavaWeb Day09 Mybatis-基础操作01-增删改查

目录 环境准备 ①Emp.sql ②Emp.java 一、删除 ①Mapper层 ②测试类 ③预编译SQL&#xff08;查看mybatis日志&#xff09; 1.性能 2.安全 ④总结 二、新增 ①Mapper层 ②测试类 ③结果 ④新增&#xff08;主键返回&#xff09; 1.Mapper层 2.测试类 ⑤总结​…

【算法与设计模式】

一、数据结构与算法 1、算法性能评估 时间复杂度、空间复杂度 2、数据结构 数组与列表 队列 堆栈 链表 二叉树 多叉树 递归算法 二、设计模式 1、单例 &#xff08;1&#xff09;GIL&#xff1a;线程互斥锁。保证同一时刻只有一个线程在进行。 &#xff08;2&#xff09…