- 博客(41)
- 收藏
- 关注
原创 二分算法-day1(模板)
闭区间,开区间,左闭右开lower_bound 函数返回最小的满足 nums[i] >= target 的下标 istart 超出范围或者该数字不是 target ,则返回 {-1,-1}while 循环条件:当 l,r 之间没有元素了,循环结束各种下标的寻找。
2025-03-25 15:01:35
623
原创 双指针算法-day13(多指针)
当两数和 <= target,则对与左元素 L 来说,它和(L,R] 任意一个数之和均 <= target。i <= x <= j 拆分为 x <= i - 1 与 x <= j 两个问题。
2025-03-19 15:31:15
483
原创 滑动窗口算法-day12(选做题)
若移动窗口后,sum > 0,说明该年龄段有可以发送的用户,更新答案;窗口左右指针为 L,R,且都是年龄,[L,R] 即为窗口年龄段。
2025-03-14 17:01:45
560
原创 滑动窗口算法-day8(越短越合法子数组)
核心步骤:ans += R - L + 1;答案每次加的都是以右指针元素为核心的个数,在最短子数组情况下,在该子数组里选取多少个元素都满足条件,因此答案 + (R - L + 1);
2025-03-11 15:07:16
241
原创 滑动窗口算法-day7(越长越合法子数组)
遍历右指针,当满足条件的时候,再去收缩左指针,达到不满足条件;此时左指针 L 的值即为当前滑窗下的答案,继续遍历;
2025-03-10 21:25:36
620
原创 滑动窗口算法-day6(最短子数组)
第二题是经典的滑动窗口题目,注意细节即可;第一题和第三题有类似的地方,都是先用 cnt 记录元素总数,再用滑动窗口内元素去消 cnt 元素,使某变量削减到一定数量,再更新答案;注意点:1,3 题的 while 循环是在满足条件下更新答案的,而 2 题是利用 while 循环去达到满足条件,再用 if 判断是否可以更新答案的;第三题利用了反向思维,需要多思考;
2025-03-09 11:43:08
401
原创 滑动窗口算法-day4
前两题都是移动窗口右边界然后进行计算的题目,注意第一题的各种函数就行了;第三题对计算要求比较高,很多不同的下标需要仔细计算;
2025-03-08 10:49:35
467
原创 滑动窗口算法-day3 (定长滑窗)
1.移动指针 i ,直到窗口长度变为 K,在过程中记录某些变量的值;2.根据题目条件,更新结果取值;3.移动窗口,即去除左边第一个数,并根据该值去更新某些变量;注意点:移动窗口过程中,下标的变化;
2025-03-07 17:20:00
1221
原创 滑动窗口算法-day2
遍历整个数组;左指针:根据题目条件不断右移,去除不符合的元素,使得 L-R 元素均满足题目条件;答案方案数一定是建立在包含右指针的情况下去计算;第六题的反向思维转换为滑动窗口非常巧妙,可以多思考几遍;
2025-03-06 21:30:29
824
原创 双指针算法-day7 (原地修改)
原地修改双指针步骤:首先确定左右指针位置和移动方向;其次,确定更新方式,一般有3种:1.左指针更新数组,右指针移动寻找满足条件的元素 ,将右指针指向的数直接赋值给左指针。(适用于可以舍弃不满足条件的元素);2.将左指针指向的数与右指针指向的数交换。(适用于将满足条件的数提前的题目);3.左右指针同频移动,共同寻找不符合条件的数组对,进行交换;复写0 这题比较有思想深度,用到了三指针,得多想多模拟;
2025-03-05 21:22:09
913
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人