双指针 双指针的过程:在遍历数组的过程中,定义两个相同方向或者相反方向的指针进行遍历,根据两个指针所在的数据进行处理,从而达到相应的目的。 首尾指针(对撞指针) 对撞指针是指在数组中,将最左侧的索引(0)定义为左指针(left),最右侧的索引(数组长度-1)定义为右指针(right),然后两个指针都 ...
转载
2021-10-10 17:09:00
281阅读
2评论
相信大家已经对双指针法很熟悉了,但是双指针法并不隶属于某一种数据结构,我们在讲解数组,链表,字符串都用到了双指针法,所有有必要针对双指针法做一个总结。数组篇在数组:就移除个元素很难么?中,原地移除数组上的元素,我们说到了数组上的元素,不能真正的删除,只能覆盖。一些同学可能会写出如下代码(伪代码):for (int i = 0; i < array.size(); i++) { if (
原创
2021-03-02 19:53:39
304阅读
给「代码随想录」一个星标吧!❝又是一波总结❞相信大家已经对双指针法很熟悉了,但是双指针法并不隶属于某一种数据结构,我们在讲解数组,链表,字符串都用到了双指针法,所有有必要针对双指针法做一个总结。数组篇在数组:就移除个元素很难么?中,原地移除数组上的元素,我们说到了数组上的元素,不能真正的删除,只能覆盖。一些同学可能会写出如下代码(伪代码):for(inti=0;i<array.size();
原创
2020-12-29 15:58:03
767阅读
一、双指针法简介 所谓双指针,指的是在遍历对象的过程中,不是普通的使用单个指针(索引、游标、指针或可迭代对象皆可)进行访问,而是使用两个相同方向或
原创
2023-10-10 09:59:28
128阅读
三数之和解法链接public List<List<Integer>> fourSum(int[] nums, int target) { List
原创
2022-05-31 07:43:20
182阅读
【LeetCode 03】双指针法总结一、适用条件适用条件为:数组问题链表问题数组与链表中涉及到元素覆盖、删除
原创
2022-08-02 18:52:50
205阅读
双指针:指的是在遍历对象的过程中,引用两个指针来进行访问(可以是同方向–>快慢指针,也可以是反方向–>左右指针)从而达到相应的目的。1 快慢指针例一:26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结
转载
2023-08-16 11:32:23
66阅读
记录leetcode上刷过的算法题,本文对双指针进行总结。算法简述1、左右指针1)最长回文子串2)排序数组查找元素第一个和最后一个位置2、快慢指针3、滑动窗口1.)力扣03.无重复字符的最长子串2)暴力实现strStr() 算法简述在处理数组和链表有关的问题时,经常会用到双指针的方法,双指针技巧主要分为两类,左右指针 和 快慢指针。 而在针对的对象上,双指针技巧又可以分为 针对单个元素 的,和针
转载
2023-11-19 17:35:03
59阅读
版本一:public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> res = new A
原创
2022-05-31 07:43:11
76阅读
ector<int>& nums, int val) { int slow = 0; for (int fast = 0; fast &l
原创
2022-12-06 05:58:43
154阅读
# 使用双指针法反转链表
## 介绍
在Java编程中,反转链表是一个常见的问题,同时也是面试中经常出现的问题之一。本文将介绍如何使用双指针法反转链表。双指针法是一种常用的解决链表问题的方法,通过设置两个指针,可以在链表上进行迭代操作。
## 反转链表的流程
下面是使用双指针法反转链表的流程:
| 步骤 | 操作 |
| --- | --- |
| 1 | 初始化三个指针:previous、
原创
2023-12-11 05:58:11
125阅读
一、移动零283. 移动零 - 力扣(LeetCode)题目其实难度不高,重点是双指针这个方法。看见这题下意识第一反应就是用两个指针,一个指针在前面找0,另一个指针在后面站岗随时准备交换。但是看见非零元素的相对顺序不变就只能换办法。而后就能想到,如果碰见0元素,计数,并且利用类似于string/ve ...
欢迎点击「算法与编程之美」↑关注我们!本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。问题描述Python算...
原创
2022-02-11 14:19:18
275阅读
问题描述
Python算法题目中,掌握一定的方法和技巧或者说是了解基础解题规律,能够在解决更多复杂问题的过程中思路更清晰,算法更简单易懂。接下来用一个leetcode题目“原地删除排序数组重复项”的案例来介绍一下“双指针法”的具体应用。
题目描述:
给定一个排序数组,需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后新的数组。
输入:[1,1,2]
输出:[1,2]
解决方案
原创
2021-06-29 17:10:31
503阅读
使用双指针模拟栈简要思路使用双指针模拟元素的 出栈进栈 操作括号的匹配方法与使用栈的方法相同动画复杂度分析时间复杂度 O(N):只需要遍历一次字符串空间复杂度 O(N):因为 java 无法直接使用下标操作字符串,需要将字符串转换为数组(C++ 可实现 O(1) 空间)代码实现class Solution {
public boolean isValid(String
原创
2023-10-14 20:38:10
81阅读
编号:27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并「原地」修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,
原创
2021-07-09 10:07:16
557阅读
11. 盛最多水的容器 LeetCode-11 题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳 ...
转载
2021-10-03 09:56:00
83阅读
2评论