- 博客(9)
- 收藏
- 关注
原创 15.三数之和
当我们需要枚举数组中的两个元素时,如果我们发现随着第一个元素的递增,第二个元素是递减的,那么就可以使用双指针的方法。如果我们固定了前两重枚举到的元素a和b,那么只有唯一的c满足a+b+c=0。当第二重循环往后枚举一个元素b'时,由于b'>b那么c'一定有c'<c。(a,b,c)满足a<=b<=c,保证这个顺序,所以需要从小到大排序。那么就是我们从小到大枚举b,同时从大到小枚举c,这就是双指针。
2024-06-19 11:23:20
168
原创 11.盛最多水的容器
一开始,左右指针分别指向数组两端,可以容纳的水为min(1,7)*8=8。因为容纳的水量由两个指针指向的数字中较小值*指针之间的距离巨顶。所以应该移动数字较小的那个指针。
2024-06-19 10:51:13
162
原创 283.移动零
使用双指针,左指针指向已处理序列尾部,右指针指向未处理指针头部,当右指针指向非零数时,左右指针移动,当它指向0时,右指针动左指针不动1.序列没有0,左右指针原地不动2.序列有0,右指针先走一步,此时左指针对应的就是0,所以要交换因此每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。
2024-06-18 11:09:25
412
1
原创 128.最长连续序列
但仔细分析这个过程,有许多不必要的枚举已知有一个x,x+1,x+2,...,x+y的连续序列,而我们却从x+1 x+2...开始匹配,这样就浪费了很多时间,所以我们要跳过这些情况。在最坏情况下时间复杂度会达到O(n^2)即外层枚举O(n)次内层暴力匹配O(n)次,无法满足题目要求。然后就是不断匹配x后面是否存在x+1 x+2 ... x+y那么最长递增序列就是y+1。判断条件是:我们要枚举的数x一定不存在前驱数x-1,不然我们就会从x-1开始尝试匹配了。用暴力枚举的方法就是O(n)遍历数组是否存在这个数。
2024-06-18 10:39:18
530
原创 leetcode个人记录Day1
哈哈哈哈哈第一题就不会做,新手小白了属于是连vector的长度怎么表示都不记得了,真的是。。这道题有暴力枚举法和更快速度的方法。
2024-06-17 10:16:39
249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅