双指针思路及其实现双指针就是在一个循环里有两个变量同时向前推进,循环结束条件可以是一个或多个(只要不是死循环就可)。一般模型为i(第一个指针,以下同),j(第二个指针,以下同)。第一种模型为一个数组(i从首位开始,j从末尾开始)第二种模型为二个数组(i从第一个数组首位开始,j从第二个数组尾部出发),第三钟为两个数组(i从第一个数组首位开始,j从第二个数组首位开始)双指针一般都是两层循环优化而来,特
2021年的尾巴,发个题解~1.从双倍数组中还原原数组题目:一个整数数组 original 可以转变成一个 双倍数组 changed ,转变方式
原创
2022-03-30 18:37:31
64阅读
双指针一、介绍双指针指的是在遍历对象的过程中,使用两个指针进行相同或相反方向的扫描,从而达到相应的目的。此处的指针并非C语言中的指针,而是索引。双指针算法是一个遍历对象的过程,因而其常应用于数组、链表双指针算法的最重要的目的是,将较高时间复杂度(O(n^2))降为线性的时间复杂度(O(n)),是一种对暴力搜索算法的优化。二、场景引入问题:给定一个升序排列的数组和一个目标值,从该数组中找出两个元素,
转载
2023-07-12 19:24:25
109阅读
双指针1. 双指针基础知识1. 双指针简介2. 对撞指针3. 快慢指针4. 分离双指针2. 滑动窗口2.1 算法介绍2.2 适用范围:2.3 固定长度窗口2.4 不定长度窗口3. 双指针相关题目:2.1 对撞指针167.两数之和||输入有序数组125.验证回文串344.反转字符串15.三数之和2.2 快慢指针80.删除有序数组中的重复项||283.移动零2.3 分离指针88.合并两个有序数组 1
1.双向指针在链表中的应用所谓双指针,指的是在遍历对象的过程中,不是使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行遍历,从而达到相应的目的。双指针的使用可以降低程序的时间复杂度或者空间复杂度,总之是一种有效的解决问题的方案。 (注:这里所说的指针,并不是C/C++中指针的概念,而是指索引,游标或指针,可迭代对象等)
转载
2023-08-30 19:58:16
62阅读
题目汇总以下链接均为我博客内对应博文,有解题思路和代码,不定时更新补充。目前范围:Leetcode前150题Two Sum/Two Sum II 给定一个整数数组,从中找出两个数的下标,使得它们的和等于一个特定的数字。假设题目有唯一解。3Sum 从一个数组中找到三个数,使这三个数的和为0。有可能存在多组解,也有可能存在重复的解,所以需要去重。比如:num=[-1,0,1,2,-...
原创
2021-06-16 20:36:34
214阅读
## Python双指针技巧教程
在现代编程中,双指针技术是一种有效的算法策略,广泛应用于处理数组或链表等数据结构的问题。双指针可以显著提高算法的效率,降低时间复杂度。本文将带你了解双指针的基本原理,通过具体的实例及代码来帮助你掌握这项技巧。
### 流程概述
在实现双指针的过程中,可以按照以下步骤进行:
| 步骤 | 描述 |
明年就是找工作了,又要开始刷题了,把之前做过的题目再梳理整理一遍,但愿明年不要那么拉跨,祈祷明年能找到工作,千万不能毕业就失业。分类别解析leetcode上的一些相关的例题路,代码采用C++与python实现。双指针主要分为如下的三类题目: 对撞指针, 快慢指针, 其他双指针.对撞指针对撞指针的问题,一般是数组首尾各有一个指针,这俩指针往中间移动过,解决相对应的问题167 有序数组的 Two Su
双指针技巧再分为两类,一类是**「快慢指针」,一类是「左右指针」**。前者解决主要解决链表中的问题,比如典型的判定链表中是否包含环;后者主要解决数组(或者字符串)中的问题,比如二分查找。一、快慢指针的常见算法快慢指针一般都初始化指向链表的头结点 head,前进时快指针 fast 在前,慢指针 slow 在后,巧妙解决一些链表中的问题。1、判定链表中是否含有环这属于链表最基本的操作了,学习数据结构应
文章目录一、算法原理二、算法实战1. 力扣283 移动零2. 力扣1089 复写零3. 力扣15 三数之和4. 力扣18 四数之和三、总结 一、算法原理双指针算法是指在遍历对象的过程中不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。常见的双指针算法有两种:在一个序列里,用两个指针维护一段区间在两个序列里,一个指针指向一个
双指针问题双指针在日常生活中很常见,leetcode中也有许多的题目与之相关。接下来是几个双指针的案例。需要注意的一个点:如果想知道一道题目是否能使用双指针,你就需要去判断,该指针所指向的值,两个是否能进行合理的判断(三数之和中,两个指针所指向的值经过计算与0的比对结果控制指针的走向,而雨水问题中,两个指针所指向的柱子高度较小值于指针值的差的乘积于当前面积的比对结果控制指针走向)下面就是双指针的一
目录141. 环形链表(easy)题目V1(快慢指针)V2(哈希表)283. 移动零(easy)题目V1V227. 移除元素(easy)题目V1V2V326. 删除排序数组中的重复项(easy)题目V1V280. 删除排序数组中的重复项 II(medium)题目V1 141. 环形链表(easy)题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达
目录核心思想一、快慢指针二、对撞指针三、滑动窗口核心思想1.两个指针,其中一个
原创
2022-09-08 10:14:45
217阅读
大家好,今后我会在博客分享自己一些算法解题思路和一些有趣的推理题,欢迎有兴趣的朋友们一起来学习呀双指针是一种思想或一种技巧并不是特别具体的算法。
具体就是用两个变量动态存储两个结点,来方便我们进行一些操作。通常用在线性的数据结构中。解决双指针问题四种常用思想:1、普通双指针(two sum),一般两个for循环,外层i和内层j可以认为是普通的双指针;
2、左右指针(二分搜索):需要两个指针,一个指
转载
2023-07-22 16:26:22
196阅读
第二章 双指针2.1 介绍算法思想
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。2.2 Two Sum问题167. 两数之和 II -
转载
2023-08-24 23:06:33
42阅读
根据: github优秀创作者.算法思想1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学1. 双指针法:双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。1.1 有序数组的 Two Sum题目描述:在有序数组中找出两个数,使它们的和为 target。输入: numbers={2, 7, 11, 15}, target=9
输出: [1,
# Python双指针模板:高效解决问题的利器
双指针是算法中一种常见且高效的技术,尤其在处理数组和链表等数据结构时,能够显著降低时间复杂度。本文将介绍双指针的基本概念及其应用,并结合代码示例和状态图,以帮助读者更好地理解这一技巧。
## 什么是双指针
双指针技术通常使用两个指针在问题的解空间中进行搜索。这两个指针可能朝同一方向移动,或一个指向左侧,一个指向右侧。双指针常用于解决以下几类问题
读完本文,你可以去力扣上拿下如下题目:26.删除排序数组中的重复项83.删除排序链表中的重复元素27.移除元素283.移动零------------我们知道对于数组来说,在尾部插入、删除元素是比较高效的,时间复杂度是O(1),但是如果在中间或者开头插入、删除元素,就会涉及数据的搬移,时间复杂度为O(N),效率较低。所以上篇文章O(1)时间删除/查找数组中的任意元素就讲了一种技巧,把待删除元素交换到
原创
2021-04-07 09:23:51
126阅读
26.删除排序数组中的重复项83.删除排序链表中的重复元素27.移除元素283.移动零------------我们知道对于数组来说,在尾部插入、删除元素是比较高效的,时间复杂度是 O(1),但是如果在中间或者开头插入、删除元素,就会涉及数据的搬移,时间复杂度为 O(N),效率较低。所以上篇文章 O(1)时间删除/查找数组中的任意元素 就讲了一种技巧,把待删除元素交换到最后一个,然后再删除,就可以避
原创
2021-04-07 09:35:04
102阅读
什么是同向双指针? 什么是相向双指针?
双指针的鼻祖题 —— 两数之和 Two Sum 链表上的快慢指针算法
快速排序 & 归并排序 同向双指针 • 相向双指针
• 几乎所有 Two Sum 变种 • Partition
• Quick Select • 分成两个部分 • 分成三个部分
• 一些你没听过的(但是面试会考的)排序算法 一个典型的相向双指针问题就
原创
2023-06-01 12:18:39
162阅读