
双指针算法
文章平均质量分 65
圆圆无敌
一个集美貌与智慧于一身的女子
展开
-
力扣:209.长度最小的子数组
设置两个指针,分别表示子数组的开始和子数组的结束两层for循环,最后求子数组总和一个while,自己在脑子想想,跑不过,我就不画图,写代码了哈。方法二:在暴力枚举的方法上做出改进-->滑动窗口,还是用了双指针,和单调性,全是正数会越加越大,让两个指针同向移动来实现优化。3.特殊情况:数组总和小于target,返回零。方法一:暴力枚举:时间复杂度是O(n^3)如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。个正整数的数组和一个正整数。滑动窗口步骤:1.进入窗口。原创 2024-01-13 13:17:24 · 478 阅读 · 2 评论 -
力扣:18.四数之和
时间复杂度O(n^4)-----》这个不可跑过力扣。时间复杂度O(n^3)-》利用率三数之和--》利用率两数之和。由题可知:做这个题要主要面临的困难是去重和漏选,去重主要利用的是排序,set等,漏选就枚举。示例解析[1,0,-1,0,-2,2]->排序后[-2,-1,0,0,1,2]2.去除第二个数的重如:第一固定数是-1,第二固定数:0,0结果一样。4.两数之和,设置两个指针left,right-》降低复杂度的关键。去重:1.去除第一固定数的重如:0,0,求出来的一样。请你找出并返回满足下述全部条件且。原创 2024-01-09 22:20:21 · 506 阅读 · 0 评论 -
力扣:15.三数之和
1.暴力枚举:显然是不行的都O(n^3),力扣肯定顶过不了,通过上面的阐述,我们可以将三个数返程1+2的形式:将一个指针i指向数组的元素,然后用target去减去nums[i]的到两个数的target然后转化成求两数之和这个就是解法二。得出结论: nums[i]+nums[j]+nums[k]==0 && i!2解法二:单调性,双指针加上暴力枚举,时间复杂度降到O(n^2)例如:[2,7,11,15,19,21],target=30。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。原创 2024-01-06 10:47:00 · 1055 阅读 · 0 评论 -
611.有效的三角形个数
给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。原创 2023-12-05 09:54:20 · 472 阅读 · 0 评论 -
11.盛最多的水的容器
给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。49图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。原创 2023-11-28 10:09:11 · 403 阅读 · 0 评论