第二章 双指针2.1 介绍算法思想
双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。2.2 Two Sum问题167. 两数之和 II -
转载
2023-08-24 23:06:33
56阅读
双指针思路及其实现双指针就是在一个循环里有两个变量同时向前推进,循环结束条件可以是一个或多个(只要不是死循环就可)。一般模型为i(第一个指针,以下同),j(第二个指针,以下同)。第一种模型为一个数组(i从首位开始,j从末尾开始)第二种模型为二个数组(i从第一个数组首位开始,j从第二个数组尾部出发),第三钟为两个数组(i从第一个数组首位开始,j从第二个数组首位开始)双指针一般都是两层循环优化而来,特
转载
2023-12-14 10:42:07
29阅读
双指针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
转载
2023-12-01 11:02:24
62阅读
双指针双指针在快速排序中和归并排序中,以及二分法中…都已经用到了,原理就是创建两个变量当做指向标点,然后通过单调性的规律来使两个指针移动,最终找到方案或答案。例题来进一步了解双指针【例题1:】 给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式 第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式 共一行,包含一个整数,表
转载
2023-11-06 22:35:20
173阅读
一、什么是双指针双指针我所理解地是在遍历对象时,不是使用单个指针进行访问,而是使用两个相同方向或者相反方向的指针进行遍历,从而达到相应的目的。在JAVA中并没有像C/C++指针地概念,所以这里所说的双指针是指索引,游标或可迭代对象等。双指针在链表中也有很多用处,比如前面写到过的找出链表中的倒数第k个结点,就巧妙地利用到了双指针,此外,判断链表中是否有环也可以使用双指针,设两个快慢指针,让快指针一次
转载
2023-06-19 22:17:10
225阅读
理解双指针在Java中双指针主要用来遍历数组,两个指针指向数组中不同的元素,从而协同任务。也可以延伸到多个数组的多个指针。快慢指针:两个指针指向同一数组,遍历方向相同,两个指针包围的区域称为滑动窗口,经常用于区间搜索。左右指针:两个指针指向同一数组,遍历方向相反,可以用来进行搜索,被搜索的数组往往是排好序的。左右指针指针的概念结合实例更容易理解,下面结合力扣题目对指针进行说明:167. 两数之和
转载
2024-04-22 21:06:01
34阅读
一、什么是双指针算法?严格的来说,双指针只能说是是算法中的一种技巧。双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。二、双指针算法的适用范围常用在数组遍历中,我们使用两个指针进行操作,遍历完整个数组来实现我们的目的。一般能用双指针算法解决的问题,都可以用暴力解法解决,常用于单调场景。所以双指
转载
2023-11-12 22:01:32
93阅读
今晚跟一个朋友突然问我,你懂双指针遍历吗?并叫我敲出代码。当时自己愣住了,但是还是写出来了,第一个版本是:#include <iostream>
using namespace std;
int main(int argc, char** argv, char** arge)
{
cout<<"输出参数个数:"<<argc<<endl;
转载
2024-07-02 07:48:50
45阅读
双指针:可以将其分成快慢指针和左右指针,两者有不一样的应用场景。快慢指针:主要是用于一些判断链表问题的,比如说判断当前的链表是否包含有环存在,这些题目往往使用单个指针是很难解决的。//判断当前的链表是否有环
struct ListNode{
struct ListNode *next;
int val
};
bool hasCycle(ListNode* head)
{
ListNode f
转载
2023-12-18 17:05:35
31阅读
1.移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 var moveZeroes = function(nums) {
let n = nums.length;
for (let i = 0;
转载
2023-10-23 09:24:34
68阅读
指针是C语言中的难点,C++中自然也免不了其身影。以下是我学习中的积累,不足之处望不吝赐教。指针类型:指针Const int* pstr 不能修改被指向的对象,可以使指针指向其他对象
如:const int* pvalue {&value};
*pvalue=6; //will not compile
pvalue=nullptr; //ok
Int* c
转载
2023-10-02 09:20:51
75阅读
双指针:指的是在遍历对象的过程中,引用两个指针来进行访问(可以是同方向–>快慢指针,也可以是反方向–>左右指针)从而达到相应的目的。1 快慢指针例一:26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结
转载
2023-08-16 11:32:23
66阅读
双指针算法及经典例题双指针算法介绍模板:双指针的经典例子:输出单词经典例题: 最长连续不重复子序列 双指针算法介绍双指针算法有两类: 1.对撞指针 :两个指针分别指向不同的队列(归并排序) 2.快慢指针 : 两个指针指向一个队列(快排)模板:for(int i =0;i<n;i++){
for(int j =0;j<=i;j++){
if(check(j,i)){
r
转载
2024-01-03 20:55:02
24阅读
基础算法篇——双指针算法本次我们介绍基础算法中的双指针算法,我们会从下面几个角度来介绍:双指针简介双指针基本使用最长连续不重复字符列数组元素的目标和判断子序列双指针简介首先我们先来简单介绍一下双指针:双指针算法就是采用两个变量作为指针放在数组的某个部位来实现复杂度简化我们来介绍一下双指针的使用场景:双指针通常用于简化双for循环的场景,将复杂度为O(N^2)变为O(N)双指针可以用于单个序列中,例
转载
2023-12-27 22:08:32
31阅读
目录141. 环形链表(easy)题目V1(快慢指针)V2(哈希表)283. 移动零(easy)题目V1V227. 移除元素(easy)题目V1V2V326. 删除排序数组中的重复项(easy)题目V1V280. 删除排序数组中的重复项 II(medium)题目V1 141. 环形链表(easy)题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达
转载
2023-11-07 11:39:21
41阅读
大家好,今后我会在博客分享自己一些算法解题思路和一些有趣的推理题,欢迎有兴趣的朋友们一起来学习呀双指针是一种思想或一种技巧并不是特别具体的算法。
具体就是用两个变量动态存储两个结点,来方便我们进行一些操作。通常用在线性的数据结构中。解决双指针问题四种常用思想:1、普通双指针(two sum),一般两个for循环,外层i和内层j可以认为是普通的双指针;
2、左右指针(二分搜索):需要两个指针,一个指
转载
2023-07-22 16:26:22
240阅读
# Java 双指针 for 循环
在编程中,我们经常需要遍历数组或集合中的元素。对于一些特定的场景,使用双指针 for 循环能够更加高效地解决问题。本文将介绍双指针 for 循环的概念和使用方法,并提供一些代码示例来帮助读者更好地理解。
## 什么是双指针 for 循环
双指针 for 循环是一种在遍历数组或集合时使用的技巧。正常的 for 循环通过一个循环变量来依次访问数组或集合的元素。
原创
2023-08-14 13:53:01
444阅读
在处理 Java 中的数组和字符串问题时,常常会运用“双指针”的技术。这种方法可以高效地解决很多典型问题,比如寻找特定元素、反转数组、以及滑动窗口问题等。本文旨在对 Java 双指针循环的相关技术进行全面的复盘记录,包括其背景、核心维度、特性拆解、实战对比、选型指南以及生态扩展等内容。
## 背景定位
双指针技术的运用由来已久,随着计算机科学的发展,这一方法被广泛应用于算法与数据结构领域。在上
# Java 双指针算法入门指南
双指针算法是一种常见的算法技巧,通常用于解决数组或链表问题。它的基本思路是使用两个指针同时遍历序列,以达到优化时间复杂度的目的。本文将通过示例和代码,详细讲解如何在Java中实现双指针算法。
## 1. 双指针算法流程
在实现双指针算法之前,我们首先确定实现的流程。以下是基本的流程步骤:
| 步骤 | 描述
力扣习题跟"着爱学习的饲养员"练习的,感觉讲的不错算法入门之双指针1、什么是指针?在百度百科中这样规定:指针是一个占据存储空间的实体在这一段空间起始位置的相对距离值。在C/C++语言中,指针一般被认为是指针变量,指针变量的内容存储的是其指向的对象的首地址,指向的对象可以是变量(指针变量也是变量),数组,函数等占据存储空间的实体。 即:指针就是变量2、什么是双指针?指的是在遍历对象的过程中,不是普通