技术栈
双指针
递归尽头是星辰
3 天前
算法
·
双指针
·
滑动窗口
·
子串/子数组问题
双指针与滑动窗口算法精讲:从原理到高频面试题实战
在算法面试中,双指针和滑动窗口如同两把瑞士军刀,能高效解决80%以上的数组和字符串问题。本文将深入解析这两种技术的核心差异,结合力扣高频题目,提供可直接复用的代码。
pusue_the_sun
3 天前
算法
·
双指针
每日算法题推送
我们先来结合实例看一下判断快乐数的整个过程:结合题目可以知道,如果一个数是快乐数,那么这个数最终就会变成1,如果一个数不是快乐数,那么变化序列最终就会陷入循环。想一下,如果题目没有告诉我们“如果一个数不是快乐数,最后会陷入死循环”这句话,我们应该如何来证明这个观点?
爱编程的化学家
5 天前
数据结构
·
c++
·
算法
·
leetcode
·
双指针
·
哈希
代码随想录算法训练营第六天 - 哈希表2 || 454.四数相加II / 383.赎金信 / 15.三数之和 / 18.四数之和
文档讲解:代码随想录算法训练营 视频讲解:算法视频公开课 状态:思路自己想出来了,但代码没有实现出来首先如果使用暴力方法,也就是对数组nums1到nums2依次遍历,直到找到符合要求的组合,那么时间复杂度为O(n^4)。 如何能减少时间复杂度呢? 想到之间 242.有效字母异位词 的解法,我们可以遍历nums1和nums2,求出二者num1 + num2之和的组合,并记录出现的次数。 接着,我们再遍历nums3和nums4,现在我们的目标值是找到target = 0 - num3 - num4,因为题目要
林木辛
6 天前
算法
·
leetcode
·
双指针
LeetCode热题 15.三数之和(双指针)
题目最简单的最暴力的想法就是三重循环便利所有可能的三元组,检查他们的和是否为零,并去除重复的组合。这种的时间复杂度是0(n^3)。 这时候我们可以想到 对于 a + b + c = 0求不重复的三元组,等价于 固定一个 a,求 b + c = -a 的不重复的 二元组。 我们可以排一下序,固定a,从0开始往右走,然后对于每个a,b和c双指针,分别从 a + 1 往右和 n - 1 往左走,每次判断一下:
3Cloudream
7 天前
算法
·
leetcode
·
字符串
·
双指针
·
滑动窗口
·
哈希表
·
中等
LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
一、文章标题LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解二、文章内容算法原理
Q741_147
21 天前
c++
·
算法
·
leetcode
·
双指针
·
滑动窗口
C++ 力扣 76.最小覆盖子串 题解 优选算法 滑动窗口 每日一题
这是封面原图,还有AI生成的动图,嘿嘿:题目链接:最小覆盖子串题目描述:示例 1: 输入:s = “ADOBECODEBANC”, t = “ABC” 输出:“BANC” 解释:最小覆盖子串 “BANC” 包含了字符串 t 的所有字符 ‘A’、‘B’、‘C’。
源代码•宸
22 天前
经验分享
·
算法
·
leetcode
·
双指针
Leetcode—1163. 按字典序排在最后的子串【困难】
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!
KarrySmile
22 天前
数据结构
·
算法
·
链表
·
双指针
·
快慢指针
·
hot100
·
灵艾山茶府
Day8--HOT100--160. 相交链表,206. 反转链表,234. 回文链表,876. 链表的中间结点
每日刷题系列。今天的题目是力扣HOT100题单。链表题目。思路【我】:1,计算链表长度2,令A为较短链(如果B是短链,交换链表指针p和长度len)
迷鹿鲲
25 天前
双指针
最短无序连续子数组+双指针
题目: 思考:实现:合并遍历搜索:
Q741_147
1 个月前
c++
·
算法
·
leetcode
·
双指针
·
滑动窗口
C++ 力扣 438.找到字符串中所有字母异位词 题解 优选算法 滑动窗口 每日一题
题目链接:找到字符串中所有字母异位词题目描述:示例 1: 输入: s = “cbaebabacd”, p = “abc” 输出: [0,6] 解释: 起始索引等于 0 的子串是 “cba”,它是 “abc” 的字母异位词。 起始索引等于 6 的子串是 “bac”,它是 “abc” 的字母异位词。
KarrySmile
1 个月前
数据结构
·
算法
·
双指针
·
滑动窗口
·
不定长滑动窗口
·
最大连续1的个数
·
最长子数组
Day8--滑动窗口与双指针--1004. 最大连续1的个数 III,1658. 将 x 减到 0 的最小操作数,3641. 最长半重复子数组
今天要训练的题目类型是:【不定长滑动窗口】,题单来自@灵艾山茶府。滑动窗口相当于在维护一个队列。右指针的移动可以视作入队,左指针的移动可以视作出队。
崎岖Qiu
1 个月前
java
·
算法
·
leetcode
·
力扣
·
双指针
·
滑动窗口
leetcode643:子数组最大平均数 I(滑动窗口入门之定长滑动窗口)
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。任何误差小于 10^-5 的答案都将被视为正确答案
Q741_147
1 个月前
c++
·
算法
·
leetcode
·
贪心
·
双指针
优选算法 力扣 611. 有效三角形的个数 双指针降低时间复杂度 贪心策略 C++题解 每日一题
题目链接:有效三角形的个数题目描述:示例 1: 输入:nums = [2,2,3,4] 输出:3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3
✿ ༺ ོIT技术༻
2 个月前
算法
·
排序算法
·
剑指offer
·
双指针
·
滑动窗口
·
分治
剑指offer第2版:双指针+排序+分治+滑动窗口
调整数组顺序使奇数位于偶数前面(二)_牛客题霸_牛客网如果不考虑相对位置的话,那么我们可以模仿hoare快排,使用双指针的思想,一个指针在前向后找偶数,一个指针在后,向前找奇数,然后再交换就行 时间复杂度是n
Alfred king
2 个月前
算法
·
leetcode
·
职场和发展
·
数组
·
排序
·
双指针
Leetcode 四数之和
和三数之和的类似,首先需要对数组进行排序。用两个嵌套的外部循环(i 和 j)来固定潜在四元组的前两个数字。为了避免重复的四元组,代码会跳过连续相同的数字,无论是对 i 还是对 j。在这些循环内部,它初始化两个指针 left 和 right,left 指向 j 之后的位置,right 指向数组末尾。这两个指针随后向内移动,寻找另外两个数字,使其与 nums[i] 和 nums[j] 相加后等于 target。如果当前和小于 target,left 指针向右移动;如果大于 target,right 指针向左移
逝雪Yuki
2 个月前
c++
·
算法
·
leetcode
·
双指针
·
接雨水
Leetcode——42. 接雨水
还记得第一次见该题根本无从下手。其实,我们不妨把问题拆解,简单化。不要怕自己写的是暴力算法,有很多算法技巧其实就是在暴力算法的基础上优化得来。
逝雪Yuki
2 个月前
c++
·
算法
·
leetcode
·
双指针
Leetcode——11. 盛最多水的容器
首先该题的暴力做法就是两侧for循环,枚举所有的可能。我们在此基础上进行思考,能否减少枚举的数量。要想容纳最多的水,与两边最低边和长度有关。
逝雪Yuki
2 个月前
c++
·
leetcode
·
二分查找
·
双指针
·
环形链表
Leetcode——287. 寻找重复数
首先很简单的做法即用哈希表记录数字出现的次数,最后循环哈希表输出value值不为1的key值。接着就是考虑高效算法,这里可以将数组看作一个链表,这个思想确实很巧妙,但也很难考虑到。
Zz_waiting.
2 个月前
java
·
开发语言
·
数据结构
·
算法
·
leetcode
·
双指针
Java 算法解析 - 双指针
本文选取八道算法题目,对题目进行详解,对算法原理进行图文并茂的讲解,最终附上完整答案!目录283 移动零
Tisfy
2 个月前
算法
·
leetcode
·
散列表
·
题解
·
双指针
·
滑动窗口
·
哈希表
LeetCode 1695.删除子数组的最大得分:滑动窗口(哈希表)
力扣题目链接:https://leetcode.cn/problems/maximum-erasure-value/