相向双指针

a1879272183119 天前
算法·leetcode·双指针·滑动窗口·原理·相向双指针·算法讲解
【算法】双指针与滑动窗口(三):相向双指针——比较、排除、收缩双指针系列第三篇,相向双指针专题。三道题讲透"比较、排除、收缩":LC167 两数之和 II(裸题;一版过,但这题的判决书有个反直觉的结构——淘汰 r 时,论证的全部内容却是 l 的未来:"不动的那边"才是死刑判决的依据);LC11 盛最多水的容器(排除论证的原题;代码一次过、证明欠着的病历——“谁矮动谁"凭什么安全,矮边的所有剩余配对上限 ≤ 已记录值;以及"排序的自由度”:LC15 的下标是身份标签、LC11 的下标是坐标);LC15 三数之和(boss;四版弧线——把双指针写成递归回溯的六 if 平
xxxxxmy10 个月前
python·相向双指针
相向双指针—接雨水我们可以举例子思考:如果有两条线,高度分别是7和8,宽度是5,那么容纳的水的容量就是7乘以5=35,易知高度是由较短的那条线决定的。此时如果我们保持高度为7的线不变,将宽度变小,试图找到容纳更多的水的两条线,那么不管新找到的线的高度比7大还是小,面积都不会比之前的7和8组成的容器能容纳的水量更大,因为如果线比7高,面积仍然由高度为7的线决定,如果线比7低,面积就会更小,因此此时我们就需要舍弃7那条线,以高度为8的那条线为容器的边来考虑新的可能,(这样8更小的宽度才有可能大于75),之后会继续比较8和新的线
xxxxxmy10 个月前
python·算法·相向双指针
相向双指针—三数之和如果我们使用暴力解法,即嵌套两个 for 循环从而寻找相加之和为目标的两个数,那么这个实现的时间复杂度是 O( n 2 n^2 n2),显然是需要优化的。 根据题目描述,我们可以看到还有个条件没有利用到,即 “该数组已按非递减顺序排列” ,那么我们尝试利用有序数组对算法进行优化。 假设输入的数组是[2, 7, 11, 15],target = 9,如果我们知道 2+11 > 9,那么根据数组是非递减顺序的性质可知,2之后的数字加上11肯定更加大于目标值,那么此时就需要使得11更小,既然知道这个规律,我们就
我是有底线的