二分算法刷题
1. 初识
总结:二分算法题的细节非常多,容易写出死循环。使用算法的条件不一定是数组有序,而是具有“二断性”;模板三种后面会讲。
- 朴素二分
- 二分查找左端点
- 二分查找右端点
2. 朴素二分
题目链接:704. 二分查找 - 力扣(LeetCode)
循序渐进,先从暴力解法说起。
- 暴力解法:遍历全部数组,判断是否==target。时间复杂度O(n)。但是这里没有把数组是有序的这个条件给用上。
- 二分查找算法:
“二段性”,当我们发现:我们发现一个规律,在选择一个状态的时候,能够直接丢弃掉“一半”的情况。
只要选取的位置能够将全部情况划分为两个情况就可以,可以是二分之一点,要和可以是三分之一点。
但是从概率上来讲,还是每次选取二分之一点的效率最好。
编写代码
class Solution {public int search(int[] nums, int target) {int left = 0; int right = nums.length -1;while(left <= right){int mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else if (nums[mid] > target) right = mid - 1;else return mid;}return -1;}
}
朴素二分模板
朴素二分求mid的时候使用( left + right)/ 2 还是使用(left + right + 1)/2都是一样的
3. 在排序数组中查找元素的第一个位置和最后一个位置。(查找区间左端点、右端点)
题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
3.1. 暴力解法
遍历查找,第一次遇到这target标记下标,然后继续往后遍历,直到第一次找到大于target的下标。
3.2. 二分
暴力算法同样没有使用数组是有序的这个重要条件。
先来看看朴素二分能不能解决问题?
是不能的,朴素二分只能保证找到target,但是并不能保证找到的index就是边界啊。
因此就引出了另外两种二分:查找左端点、查找右端点的二分。
3.2.1. 查找左端点
朴素二分是将数组划分成3个状态(大于的、小于的、等于的)。
而查找左端点的时候是不可以将数组划分为三个状态的,这是因为的等于状态的位置请不确定,需要将其和大于状态划分到一起,这个等于的点,有可能刚好就是我们要找的左端点。
这样划分之后,
如果mid落在了【小于target】的这一段区间中,我们的mid该怎么更新状态呢?由于这里已经小于了target,而我们的目标是找到target的左端点,所以mid = mid+1.
如果mid落在了【大于等于target】这一段的区间中,mid则 mid = right,这是因为right很有可能就是我们想要寻找的左端点,不可以跳过。
那么循环的条件是什么?
无论是【】区间中有结果,还是区间中所有的数字都大于target,或者是小于target,最终,当最终left和right重合的时候,都不需要到循环中再次判断了,这就是最终状态,只需要判断这个时候的left是不是等于target即可。
如果当left==right时候,在进入循环就会陷入死循环。
求mid的操作是什么?
这里是求左端点,所以mid = (right - left )/ 2;或者 mid = left + (right-left) /2;
如果使用 mid = left +(right - left + 1) / 2;也会死循环
3.2.2. 查找右端点
原理同上。注意二段性的运用
3.2.3. 代码
class Solution {public int[] searchRange(int[] nums, int target) {if(nums.length == 0) return new int[]{-1 ,-1};int[] ret = new int[2];int left = findLeft(nums,target);int right = findRight(nums,target);ret[0] = left; ret[1] = right;return ret;}private static int findLeft(int[] nums , int target){int left = 0 , right = nums.length - 1;int mid = 0;while(left < right){mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else right = mid;}if(nums[left] != target) return -1;else return left;}private static int findRight(int[] nums , int target){int left = 0 , right = nums.length - 1;int mid = 0;while(left < right){mid = left + (right - left + 1) / 2;if(nums[mid] <= target) left = mid ;else right = mid -1;}if(nums[left] != target) return -1;else return right;}
}
3.2.4. 模板
不要死记硬背!理解
记住:就中间坐标的方式,其他的可以关联记忆!(分析二段性 --> 分析求中点mid应该怎么求(当下面出现剑法,求mid就有+1;反之则反)),具体的分类讨论的代码,就题论题。分析好中点落在某个区间的时候,left、以及right如何变化。
4. x的平方根
题目链接:69. x 的平方根 - 力扣(LeetCode)
4.1. 暴力解法
从1开始,一次遍历,计算i*i 和 x的大小。
这个大小具体满足什么要求?来看题目,题目要求返回的是整数,小数部分就会被舍去。也就是找到最大的i,满足i*i <= x.
4.2. 二分
暴力解法中其实已经看到了 二段性,在计算i*i的时候,如果不能满足要求,就可以直接排除掉“另一半”的数据量。从上面的分析也可以很清楚的看到,我们需要寻找的就是“满足条件”的数据的右端点。也就是找到 找到最大的i,满足i*i <= x.
进入循环的条件:while(left < right)
求mid的方式 : mid = left + (right -left + 1)/ 2;
开始二分
if (i*i <= x)left = mid;(因为求的是 右端点,这里有可能是等于的情况,也就是右端点,因此不可以left = mid + 1).
if (i*I > x) right = mid -1; (这里已经大于了,不可能包含我们需要的数据)
代码
class Solution {public int mySqrt(int x) {if (x == 0 || x == 1) return x;long left = 1, right = x;long mid;while(left < right){mid = left + (right - left + 1) / 2;if(mid * mid <= x) left = mid;else right = mid -1;}return (int)left;}
}
5. 搜索插入顺序
题目链接:
35. 搜索插入位置 - 力扣(LeetCode)
5.1. 暴力解法
遍历数组,找到第一个等会或者大于target的数字,返回其下标。
5.2. 二分
实际上就是适用二分法求取区间的左端点,该区间是大于等于target的这个区间。
进入循环的条件 while(left< right)
求mid = left+(right - left) / 2;
if(nums[i] < target)left = mid+1; 该区间没有满足的情况,直接跳出;
if(nums[i] >= target) right = mid; 该区间有可能,存在【左端点】,也就是恰好nums[i] == target.
结束循环后。left=right,需要判断这时候是存在nums[left] == target,还是不存在,需要返回插入的下标(此时,nunms[left] < target,返回left+1)
代码:
class Solution {public int searchInsert(int[] nums, int target) {int left = 0 , right = nums.length - 1;while(left < right){int mid = left + (right - left) / 2;if(nums[mid] < target) left = mid + 1;else right = mid;}if(nums[left] < target) return left + 1;return left;}
}
6. 山脉数组的峰值
题目链接:852. 山脉数组的峰顶索引 - 力扣(LeetCode)
6.1. 暴力解法
遍历数组中的元素,逐一判断该值是否是【峰值】,峰值的话就是大于前驱,同时也大于后继。
6.2. 二分
这道题目的难点在于,如何能看出来使用二分。
前面说过,二分的题目是看数据的二段性,这道题目的二段性在哪里?
class Solution {public int peakIndexInMountainArray(int[] arr) {int left = 0, right = arr.length - 1;while(left < right){int mid = left + (right - left ) / 2;if(arr[mid] < arr[mid + 1]) left = mid + 1;else right = mid;}return left;}
}
7. 搜索旋转排序数组中的最小值
题目链接:153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)
7.1. 暴力解法
遍历数组,通过比较记录数组中的最小元素,得到的就是最小值。
此时,并没有使用到数组的特殊性质,该数组使用过升序数组“旋转”得到的。
7.2. 二分
为什么能使用二分?
代码:
public int findMin(int[] nums) {int left = 0, right = nums.length - 1;while (left < right) {int mid = left + (right - left) / 2;// 如果中间元素大于右边界元素,说明最小值在右半部分if (nums[mid] > nums[right]) {left = mid + 1;} else {// 否则,最小值在左半部分或是mid本身right = mid;}}return nums[left];}
相关文章:
二分算法刷题
1. 初识 总结:二分算法题的细节非常多,容易写出死循环。使用算法的条件不一定是数组有序,而是具有“二断性”;模板三种后面会讲。 朴素二分二分查找左端点二分查找右端点 2. 朴素二分 题目链接:704. 二分查找 - 力扣…...
# RAG 框架 # 一文入门 全链路RAG系统构建与优化 —— 架构、策略与实践
本文全面阐述了RAG系统从数据收集、数据清洗(包括领域专有名词处理)、智能数据分块与QA对生成,到向量化、向量数据库选择与配置,再到检索方式及重排序,直至整合输出、监控反馈和安全保障的全流程。通过这一完整方案&am…...
网络运维学习笔记(DeepSeek优化版) 017 HCIA-Datacom综合实验02
文章目录 综合实验2sw3sw4gwcore1(sw1)core2(sw2)ISP 综合实验2 sw3 vlan 2 stp mode stp int e0/0/1 port link-type trunk port trunk allow-pass vlan 2 int e0/0/2 port link-type trunk port trunk allow-pass vlan 2 int e…...
Flutter——Android与Flutter混合开发详细教程
目录 1.创建FlutterModule项目,相当于Android项目里面的module库;2.或者编辑aar引用3.创建Android原生项目3.直接运行跑起来 1.创建FlutterModule项目,相当于Android项目里面的module库; 2.或者编辑aar引用 执行 flutter build a…...
java手机号、邮箱、日期正则表达式
Java正则核心API Java中用 java.util.regex 包的两个类: Pattern:编译正则表达式Matcher:执行匹配操作 1. 验证手机号 String regex "1[3-9]\\d{9}"; boolean isValid "18812345678".matches(regex); // true2. 提取…...
0x04.若依框架微服务开发(含AI模块运行)
微服务本地开发硬件资源有限,所以会将核心微服务组件先部署在服务器上比如:mysql,redis,注册中心Nacos,网关Gateway,认证中心Auth和upms模块以及低代码生成模块。 mysql、redis部署前篇已讲,这…...
数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314)
数据库管理302期 2025-03-14 数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314)1 Oracle RAC2 DMDSC3 YAC4 KES RAC总结 数据库管理-第302期 国产类RAC架构数据库网络连接方式(20250314) 作者:胖头鱼的鱼…...
ctf web入门知识合集
文章目录 01做题思路02信息泄露及利用robots.txt.git文件泄露dirsearch ctfshow做题记录信息搜集web1web2web3web4web5web6web7web8SVN泄露与 Git泄露的区别web9web10 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命…...
CSS3-流星雨
1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…...
【leetcode hot 100 199】二叉树的右视图
解法一:层级遍历,右侧看到的节点就是每一层最后一个元素 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }…...
Unity进阶课程【二】Mask 组件的使用 UI遮罩效果以及透明抠图效果
Unity组件讲解 Mask 时隔多年,今天咱们继续进阶课程,这几年变化很大,但是一直还是从事Unity行业,行业虽难,依旧坚持,以后会养成习惯,定期更新,希望小伙伴们监督,有想学习…...
本地部署Jina AI Reader:用Docker打造你的智能解析引擎
本地部署Jina AI Reader:用Docker打造你的智能解析引擎 🌟 引言:为什么需要本地部署?📌 场景应用图谱🔧 部署指南(Linux环境)1. 环境准备2. Docker部署3. 验证服务状态 🚀…...
【MyBatis Plus 逻辑删除详解】
文章目录 MyBatis Plus 逻辑删除详解前言什么是逻辑删除?MyBatis Plus 中的逻辑删除1. 添加逻辑删除字段2. 实体类的配置3. 配置 MyBatis Plus4. 使用逻辑删除5. 查询逻辑删除的记录 MyBatis Plus 逻辑删除详解 前言 MyBatis Plus 是一个强大的持久化框架…...
Unity--GPT-SoVITS接入、处理GPTAPI的SSE响应流
GPT-SoVITS GPT-SoVITS- v2(v3也可以,两者对模型文件具有兼容) 点击后 会进入新的游览器网页 ----- 看了一圈,发现主要问题集中在模型的训练很需要CPU,也就是模型的制作上,问题很多,如果有现有…...
一次Linux下 .net 调试经历
背景: Xt160Api, 之前在windows下用.net调用,没有任何问题。 但是移植到Linux去后,.net程序 调用 init(config_path) 总是报错 /root/test 找不到 traderApi.ini (/root/test 是程序目录) 然后退出程序 解决过程: 于是考虑是不是参数传错了&…...
Manus 技术探索 - 使用 gVisor 在沙箱内运行 Ubuntu 容器并通过远程浏览器访问
在容器化技术中,gVisor 为运行不信任的工作负载提供了额外的安全隔离。本文将详细介绍如何利用 gVisor 运行带 GUI 的 Ubuntu 容器,并通过 VNC/NoVNC 实现远程浏览器访问,从而轻松控制容器内的桌面环境。 1. 安装 gVisor 如果你还没有安装 …...
PentestGPT 下载
PentestGPT 下载 PentestGPT 介绍 PentestGPT(Penetration Testing GPT)是一个基于大语言模型(LLM)的智能渗透测试助手。它结合了 ChatGPT(或其他 GPT 模型)与渗透测试工具,帮助安全研究人员自…...
Day07 -实例 非http/s数据包抓取工具的使用:科来 wrieshark 封包监听工具
引入:由于我们day06正确为模拟器配置好了抓包环境,现在用bp去抓取模拟器web包是可以抓取到的,但是某些小程序 & pc端的app 都是有走非http/https协议的数据包的,那么我们就需要用不同的工具去抓取这些其他协议的数据包。 工具…...
机器学习 [白板推导](三)[线性分类]
4. 线性分类 4.1. 线性分类的典型模型 硬分类:输出结果只有0或1这种离散结果; 感知机线性判别分析 Fisher 软分类:会输出0-1之间的值作为各个类别的概率; 概率生成模型:高斯判别分析GDA、朴素贝叶斯,主要…...
c# 查找相似颜色算法
下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…...
【数据分析】读取文件
3. 读取指定列 针对只需要读取数据中的某一列或多列的情况,pd.read_csv()函数提供了一个参数:usecols,将包含对应的columns的列表传入该参数即可。 上面,我们学习了读取 "payment" 和 "items_count" 这…...
全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力
在竞争日益激烈的汽车零部件行业,产品质量和研发效率直接影响企业的生存与发展。APQP(先期产品质量策划)作为行业的研发管理框架,能够有效提升产品质量和研发效率。然而,传统的APQP管理方式往往面临流程繁琐、信息分散…...
ccf3501密码
//密码 #include<iostream> #include<cstring> using namespace std; int panduan(char a[]){int lstrlen(a);int s0;int zm0,sz0,t0;int b[26]{0},c[26]{0},d[10]{0},e0,f0;while(s<l&&l>6){if(a[s]<Z&&a[s]>A){b[a[s]-A];zm;}if(a[s…...
kali之netdiscover
kali之netdiscover Netdiscover 是 Kali Linux 中一款用于网络发现和主机扫描的工具。它通过主动发送 ARP 请求来识别局域网中的活动主机,并显示它们的 IP 地址、MAC 地址和网卡厂商信息。Netdiscover 特别适用于局域网内的主机发现和网络映射。 1. Netdiscover 的…...
Leetcode-2272. Substring With Largest Variance [C++][Java]
目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-2272. Substring With Largest Variancehttps://leetcode.com/problems/substring-with-largest-variance/description/2272. 最大波动的子字符串 - 力扣(LeetCode)2272. 最大波动的子字符串…...
【AI】技术人如何系统学习AI大模型应用开发?
从理论认知到全栈落地的完整指南 一、认知突破:理解大模型的技术本质(1-2周) 1.1 基础理论筑基 必学内容 大模型演进脉络:从Transformer到GPT-4的技术跃迁核心机制解析:注意力机制、位置编码、自监督学习关键能力边界…...
级联树SELECTTREE格式调整
步骤: 1、将全部列表设置成Map<Long, List<Obejct>> map的格式,方便查看每个父级对应的子列表,减少循环次数 2、对这个map进行递归,重新进行级联树的集合调整,将子集放置在对应的childs里面。 public Dyna…...
深入理解静态与动态代理设计模式:从理论到实践
静态代理设计模式 1.为什么需要代理设计模式? javaEE分层开发中,哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中,最为重要的是Service层 Service层包含了那些代码 Service层核心功能(几十行 上百代码) 额外…...
NET进行CAD二次开发之二
本文主要针对CAD 二次开发入门与实践:以 C# 为例_c# cad-CSDN博客的一些实践问题做一些补充。 一、DLL介绍 在 AutoCAD 中,accoremgd.dll、acdbmgd.dll 和 acmgd.dll 都是与.NET API 相关的动态链接库,它们在使用.NET 语言(如 C#、VB.NET)进行 AutoCAD 二次开发时起着关…...
PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码
以下是一个使用 PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码。该代码包含训练和可视化部分,假设输入为图片和 4 个工艺参数,根据这些输入生成相应的图片。 1. 导入必要的库 import …...
c#:使用Modbus RTU协议
Modbus是一种广泛应用于工业自动化领域的通信协议,支持多种传输方式,如RTU、TCP等。其中,Modbus RTU是一种基于串行通信的协议,具有高效、可靠的特点。本文将详细介绍Modbus RTU协议的基本原理,并重点解析功能码0x03&a…...
设计模式(行为型)-备忘录模式
目录 定义 类图 角色 角色详解 (一)发起人角色(Originator) (二)备忘录角色(Memento) (三)备忘录管理员角色(Caretaker)…...
基于yolo11+flask打造一个精美登录界面和检测系统
这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。 测试通过环境: windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.…...
【软考-架构】13.1、软件架构概述-构件技术
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件🌟软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…...
RabbitMQ(补档)
RabbitMQ 是一个开源的消息队列软件(有时也被称为消息代理),它实现了高级消息队列协议(AMQP)。它主要用于应用程序之间,或者软件组件之间的消息通信。通过使用 RabbitMQ,可以实现异步的、可靠的…...
仿“东方甄选”直播商城小程序运营平台
在公域直播流量红利趋于饱和、流量成本大幅攀升的当下,私域直播为企业开辟了新的流量聚集和转化渠道,特别是对于那些希望在私域流量领域取得突破的品牌商家来说,直播场景以其独特的高频互动氛围,相比其他运营方式,展现…...
增量数据同步怎么做
增量数据同步怎么做?比如A系统里有母猪数据,新增了一头母猪,这条母猪数据要低延迟地同步到B系统。而不是A系统全表扫描一遍,然后全部同步到B系统。这种全扫描同步方法延迟非常大,尤其涉及到母猪大数据时,会…...
LeetCode 解题思路 18(Hot 100)
解题思路: 继承 LinkedHashMap: 内置双向链表,自动维护节点的插入顺序和访问顺序。LRU 淘汰逻辑: 覆盖 removeEldestEntry,当元素数量超过 capacity 时,移除最旧条目。removeEldestEntry 方法提供钩子&…...
基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
Go红队开发—web网络编程
文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…...
ollama不安装到c盘,安装到其他盘
ollama 安装包默认安装到c盘,安装程序并没有提供选择文件夹安装功能,本来c盘就快满了,下几个模型c盘都快爆了,如何将ollma安装到其他盘呢? ollama 默认安装位置 C:\Users\Admin\.ollama 是 Ollama 用来放大模型的文件夹…...
【HTML】一、基础标签
文章目录 1、开发环境准备2、html介绍3、html基本骨架4、标签的关系5、常用标签5.1 标题5.2 段落5.3 换行与水平线5.4 文本格式化标签5.5 图像标签5.6 超链接标签5.7 音频标签5.8 视频标签 6、路径7、网页制作 1、开发环境准备 在编辑器中写代码,在浏览器中看效果 …...
NPU、边缘计算与算力都是什么啊?
考虑到灵活性和经济性,公司购置一台边缘计算机,正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念,并试图将其做个概要的说明。 一、算力:数字世界的“基础能源” 1.1 算力是什么 **算力(…...
spring声明式事务原理01-调用第1层@Transactional方法(事务访问入口)
文章目录 【README】【步骤1】UserAppService调用userSupport.saveNewUser()【步骤2】获取到TransactionInterceptor【步骤3】chain不为空,接着执行CglibMethodInvocation#proceed方法【补充】AopContext作用 【步骤4】CglibMethodInvocation#proceed方法【步骤5】调…...
[MoeCTF 2021]babyRCE
打开题目在线环境可以看到: <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacke…...
【leetcode hot 100 114】二叉树展开为链表
解法一:执行一次先序遍历,把元素放入list中,然后放回root中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { th…...
嵌入式八股,为什么单片机中不使用malloc函数
1. 资源限制 单片机的内存资源通常非常有限,尤其是RAM的大小可能只有几KB到几十KB。在这种情况下,使用 malloc 进行动态内存分配可能会导致内存碎片化,使得程序在运行过程中逐渐耗尽可用内存。 2. 内存碎片问题 malloc 函数在分配和释放内…...
基于Python的selenium入门超详细教程(第1章)--WebDriver API篇
学习路线 自动化测试介绍及学习路线-CSDN博客 自动化测试之Web自动化(基于pythonselenium)-CSDN博客 参照博文:selenium入门超详细教程——网页自动化操作-CSDN博客 目录 前言 一、WebDriver API介绍 1.1 什么是WebDriver? 1.2 工…...
IIC通信协议详解与STM32实战指南
IIC通信协议详解与STM32实战指南 引言 IIC(Inter-Integrated Circuit)是Philips公司开发的串行通信协议,广泛应用于传感器、EEPROM、RTC等低速外设的连接。本文深入解析IIC协议原理,并提供基于STM32的GPIO模拟实现方案ÿ…...
【算法】数组、链表、栈、队列、树
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 持续更新中...数组、链表点击消除环形链表环形链表 II 栈、队列树 持续更新中… 数组、链表 点击消除 AB5 点击消除 这个题很容…...