链表经典算法(+OJ刷题)
文章目录
- 前言
- 一、移除链表元素
- 二、链表的中间节点
- 三.反转链表
- 四.合并两个有序链表
- 五.分割链表
- 六.环形链表的约瑟夫问题
- 总结
创作不易,点赞收藏一下呗!!!
前言
在上一节,我们介绍了单链表的增,删,查,改接口的实现思路。今天我们就实战运用这些思想来解决一些算法题
一、移除链表元素
链接放在这里:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路一:遍历原链表,遇到满足val==val的节点就删除
思路非常简单,但是要注意一些细节。

头节点val==val的情况需要特殊考虑,此时就是头删。还有一种特殊情况就是链表为空时直接返回head即可!!!
思路二:创建新链表,遍历原链表并将val!=val的节点赋值给新链表

注意: 最后一定要判断新链表的尾节点是否指向NULL,如果不是则需要手动置为NULL!!!
思路三:哨兵节点的方式来创建带头新链表,其余思路和二相同
带头链表的好处是尾插时不需要判断新链表是否为空来分情况考虑!!!
二.链表的中间节点
链接:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路一:先遍历原链表统计节点个数,再循环来找到中间节点

思路二:快慢指针法

整体思路 :定义两个指针来遍历原链表,快指针一次走两步,慢指针一次走一步,当快指针为NULL或快指针的next指针为空时,此时慢指针就正好在中间节点上!!!
注意:循环条件的顺序两个不能写反,否则pfast为空时会报错!!!
三.反转链表
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路一:创建新链表,遍历原链表,进行头插

这个思路比较简单实现,不多赘述!!!
思路二:原地翻转,三指针法

接下来:


循环进行上述操作,直至pcur为NULL时停止,这样就完成了对链表的反转。
代码实现如下:

特别注意:一定要单独处理空链表的情况!!!
四.合并两个有序链表
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路一:遍历l1链表,在l1链表的基础上将l2链表中的节点插入到特点位置
这个思路实现的代码可能有些多,我们这里就不重点介绍!!!
思路二:创建新链表

思路三:创建带哨兵节点的新链表
整体思路和第一题的思路三相仿,感兴趣的友友们可以去看看!!!
我这里就不专门写一份了。
五. 分割链表
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路:创建两个带头链表,一个用来存放小于val的节点,另一个存放大于等于val的节点,最后将这两个节点首尾相连

注意:最后一定要将大礼链表的尾节点的next置为NULL,否则会成环,死循环!!!
六.环形链表的约瑟夫问题
链接:环形链表的约瑟夫问题_牛客题霸_牛客网

思路:运用循环链表

总结:
我们不能只会做这道题,而是应该掌握这道题目背后的算法思维!!!
相关文章:
链表经典算法(+OJ刷题)
文章目录 前言一、移除链表元素二、链表的中间节点三.反转链表四.合并两个有序链表五.分割链表六.环形链表的约瑟夫问题总结 创作不易,点赞收藏一下呗!!! 前言 在上一节,我们介绍了单链表的增,删ÿ…...
网络原理TCP/IP(4)
文章目录 面向字节流粘包问题异常情况TCP小结 面向字节流 创建⼀个TCP的socket,同时在内核中创建⼀个发送缓冲区和⼀个接收缓冲区; • 调⽤write时,数据会先写⼊发送缓冲区中; • 如果发送的字节数太⻓,会被拆分成多个TCP的数据包发出; • 如果发送的字节数太短,就会先在缓…...
【C/C++ 11】贪吃蛇游戏
一、题目 贪吃蛇游戏机制是通过控制蛇上下左右移动并吃到食物得分。 蛇头碰到墙壁或者碰到蛇身就游戏结束。 食物随机生成,蛇吃到食物之后蛇身变长,蛇速加快。 二、算法 1. 初始化游戏地图并打印,地图的边缘是墙,地图的每个坐…...
【日常总结 - java】list 与 字符串(用逗号隔开)相互转换
一、list 转 字符串 第一种:使用谷歌Joiner方法 (推荐) 第二种:循环插入逗号 第三种:stream流 (推荐) 第四种:lambda表达式遍历并加入逗号 二、字符串 转 list 方法一:使用split()方法 方法二:使用C…...
《幻兽帕鲁》好玩吗?幻兽帕鲁能在Mac上运行吗?
最近一款叫做《幻兽帕鲁》的新游戏走红,成为了Steam游戏平台上,连续3周的销量冠军,有不少Mac电脑用户,利用Crossover成功玩上了《幻兽帕鲁》,其实Crossover已经支持很多3A游戏,包括《赛博朋克2077》《博德之…...
【数据分享】1929-2023年全球站点的逐日平均能见度(Shp\Excel\免费获取)
气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全…...
浅谈——开源软件的影响力
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏:…...
MySQL-事务(TRANSACTION)
文章目录 1. 事务概述2. 事务的四大特性(ACID)3. 控制事务4. 并发事务产生的问题5. 事务的隔离级别6. 拓展6.1 InnoDB如何解决幻读?6.2 MySQL实现事务的原理? 1. 事务概述 定义:数据库的事务( Transaction…...
Vue 实现动态路由
Vue 实现动态路由 Vue中实现动态路由主要涉及到两个方面:一是路由的动态添加,二是基于路由的参数变化来动态渲染组件。这通常在使用Vue Router时进行配置和实现。以下是实现动态路由的一些基本步骤和概念: 安装和设置Vue Router npm insta…...
docker elasticsearch8启动失败
docker elasticsearch8.12.0启动后提示这个,并且始终无法访问localhost:9200 received plaintext http traffic on an https channel, closing connection Netty4HttpChannel 解决方案:重新创建 elasticsearch容器,加上 -e xpack.security.…...
《Python 网络爬虫简易速速上手小册》第1章:Python 网络爬虫基础(2024 最新版)
文章目录 1.1 网络爬虫简介1.1.1 重点基础知识讲解1.1.2 重点案例:社交媒体数据分析1.1.3 拓展案例1:电商网站价格监控1.1.4 拓展案例2:新闻聚合服务 1.2 网络爬虫的工作原理1.2.1 重点基础知识讲解1.2.2 重点案例:股票市场数据采…...
使用 IntelliJ IDEA 配合 Docker 对 Weblogic 中间件进行远程调试
使用idea对jar包远程调试: 打开一个springboot的项目进行远程调试设置: 运行: 其实我不太明白远程调试的意义,本地直接debug不好嘛。。。 点击debug的按钮,打断点测试: 跑到断点处: 远程de…...
ArcGIS学习(三)数据可视化
ArcGIS学习(三)数据可视化 1.矢量数据可视化 需要提前说明的是,在ArcGIS中,所有的可视化选项设置都是在“图层属性”对话框里面的“符号系统”中实现的。 对于矢量数据的可视化,主要有四种可视化方式: 按“要素”可视化按“类别”可视化按“数量”可视化按“图表”可视…...
【使用 Python 进行 NLP】 第 2 部分 NLTK
一、说明 Python 有一些非常强大的 NLP 库,NLTK — 自然语言工具包 — NLTK 是一个强大的开源库,用于 NLP 的研究和开发。它内置了 50 多个文本语料库和词汇资源。它支持文本标记化、词性标记、词干提取、词形还原、命名实体提取、分割、分类、语义推理。…...
【软件设计师笔记】深入探究操作系统
【软件设计师笔记】计算机系统基础知识考点(传送门) 💖 【软件设计师笔记】程序语言设计考点(传送门) 💖 🐓 操作系统的作用 1.通过资源管理提高计算机系统的效率 2.改善人机界面向用户提供友好的工作环境 🐓 操作系统的特征 …...
python常用pandas函数nlargest / nsmallest及其手动实现
目录 pandas库 Series和DataFrame nlargest和nsmallest 用法示例 代替方法 手动实现 模拟代码 pandas库 是Python中一个非常强大的数据处理库,提供了高效的数据分析方法和数据结构。它特别适用于处理具有关系型数据或带标签数据的情况,同时在时间序列分析方面也有着出…...
web前端-------弹性盒子(2)
上一讲我们谈的是盒子的容器实行,今天我们来聊一聊弹性盒子的项目属性; *******************(1)顺序属性 order属性,用于定义容器中项目的出现顺序。 顺序属性值,为整数,可以为负数ÿ…...
图论练习4
内容:染色划分,带权并查集,扩展并查集 Arpa’s overnight party and Mehrdad’s silent entering 题目链接 题目大意 个点围成一圈,分为对,对内两点不同染色同时,相邻3个点之间必须有两个点不同染色问构…...
flutter go_router 官方路由(一)基本使用
1 项目中添加最新的依赖 go_router: ^13.1.0如下图所示,我当前使用的flutter版本为3.16.0 然后修改应用的入口函数如下: import package:flutter/material.dart; import package:go_router/go_router.dart;void main() {runApp(const MyApp()); }cla…...
QT中,对于大小端UDP网络发送的demo,帧头帧尾
简单demo: 发送端: #include <QUdpSocket> #include <QtEndian>#pragma pack(1) struct Test {unsigned char t1:1;unsigned char t2:2;unsigned char t3:3;unsigned char t4:2;quint8 a 1;quint16 b 2;quint16 c 3;//double b …...
零基础部署Nanbeige 4.1-3B:Streamlit极简UI手把手教程
零基础部署Nanbeige 4.1-3B:Streamlit极简UI手把手教程 如果你对本地运行大语言模型感兴趣,但又被复杂的命令行界面和简陋的Web界面劝退,那么今天这篇文章就是为你准备的。我们将一起完成一个既好看又好用的本地AI对话界面的部署,…...
Automerge与区块链技术结合:构建去中心化数据协作的终极指南
Automerge与区块链技术结合:构建去中心化数据协作的终极指南 【免费下载链接】automerge A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically. 项目地址: https://gitcode.com/gh_mirr…...
Nano-Banana企业级部署:支持API接入PLM系统,打通产品数据链路
Nano-Banana企业级部署:支持API接入PLM系统,打通产品数据链路 1. 引言:企业级部署的价值与意义 在现代制造业和设计行业中,产品数据管理一直是个令人头疼的问题。设计师创作的产品分解图、技术团队制作的结构示意图、营销部门需…...
突破网盘下载限制:八大平台直链获取的高效方案
突破网盘下载限制:八大平台直链获取的高效方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / …...
AI绘画新体验:灵毓秀-牧神-造相Z-Turbo快速入门,小白也能画古风女神
AI绘画新体验:灵毓秀-牧神-造相Z-Turbo快速入门,小白也能画古风女神 1. 认识灵毓秀-牧神-造相Z-Turbo 1.1 什么是灵毓秀-牧神-造相Z-Turbo 灵毓秀-牧神-造相Z-Turbo是一款专门用于生成《牧神记》中灵毓秀角色图像的AI绘画模型。它基于Xinference框架部…...
YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统
YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统 想快速验证一个智能监控的想法,却卡在繁琐的环境配置和模型部署上?从安装CUDA、配置Python环境,到调试各种依赖库,可能半天时间就过去了,真正的业务逻辑…...
Phi-4-Reasoning-Vision保姆级教程:Streamlit界面响应式设计与GPU状态反馈
Phi-4-Reasoning-Vision保姆级教程:Streamlit界面响应式设计与GPU状态反馈 1. 工具概览 Phi-4-Reasoning-Vision是基于微软最新多模态大模型开发的专业级推理工具,专为双卡4090环境优化设计。这个工具能让开发者轻松体验15B参数大模型的强大推理能力&a…...
抗体研发核心工具测评:酵母 / 噬菌体文库与展示技术
一、技术定位:生物治疗抗体研发的基石工具单克隆抗体(mAbs)及其衍生物是生物治疗领域的核心支柱,尤其在肿瘤、自身免疫病等疾病治疗中占据不可替代的地位。抗体研发的起始阶段 —— 抗原特异性抗体筛选,直接决定治疗性…...
造相-Z-Image-Turbo亚洲LoRA WebUI教程:多分辨率适配(768x1024/1024x1024)
造相-Z-Image-Turbo亚洲LoRA WebUI教程:多分辨率适配(768x1024/1024x1024) 提示:本文介绍的镜像已预装所有依赖和环境,开箱即用,无需手动配置 1. 开篇:为什么需要这个工具? 如果你正…...
OpenClaw技能开发入门:为Qwen3-14b_int4_awq定制PDF解析模块
OpenClaw技能开发入门:为Qwen3-14b_int4_awq定制PDF解析模块 1. 为什么需要自定义PDF解析技能 去年我在处理一批技术白皮书时,发现OpenClaw内置的文件处理能力对复杂PDF支持有限。当我想让AI助手自动提取PDF中的表格数据并生成摘要时,系统总…...

