![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
slow is also fast
这个作者很懒,什么都没留下…
展开
-
刷题笔记 day9
但是子区间之和 等于 总区间和 - x 的这个子区间是连续的,简言之,target = sum -x ,sum等于原数组所有数之和。3. 数组中可以将 x 消除为0,那么可以从左边减小为 0;利用变量ret 记录子区间的和,当ret > target 时,更新ret值,并将右移left指针;这样分析下来,这道题的第三种情况的处理会比较麻烦,因为减小为 0 的区间存在不连续。解析:1. 当数组的两端的数都大于x时,直接返回 -1。2. 当数组所有数之和小于 x 时 ,直接返回 -1。原创 2023-08-07 22:35:00 · 191 阅读 · 0 评论 -
刷题笔记 day8
这道题要求将原数组中的0翻转成1,求出最大元素全是1的子数组长度,看这道题第一感觉还要将里面的0变成1,感觉这道题解决起来很麻烦,但是我们可以转变思路,然后让 left 往右走 , 减小 0 的个数即--count,当 count 不大于 k 时结束,当count > k 时,说明 [left,right)区间内 0 的个数已经大于 k;2. 让 right 指针往数组后面走,使用记录 0 个数的变量 count;找出其最大子数组,使得子数组里面0元素的个数不超过 k,然后求其子数组长度。原创 2023-08-06 19:00:59 · 330 阅读 · 0 评论 -
刷题笔记 day7
2)右移指针right的同时使用sum记录指针right处的值,并判断sum的值是否满足要求,如果满足要求,利用循环来移动指针left,并记录每次满足要求的子数组最小长度。1)先初始化 两个指针 left ,right。3)当指针right走到数组尾端时结束。解法:滑动指针(对同向双指针区间内的数据处理)原创 2023-08-04 21:50:50 · 615 阅读 · 1 评论 -
刷题笔记 day6
57 和为s的两个整数。原创 2023-08-03 16:49:53 · 390 阅读 · 0 评论 -
刷题笔记 day5
1)定义快慢指针;2)快指针走两步,慢指针走一步;3)两个指针相遇时判断相遇的数值是否为1。首先来分析什么样的数是快乐数,怎样处理 取各分位数的平方和?原创 2023-08-02 23:07:40 · 229 阅读 · 1 评论 -
刷题笔记 day4
其次在固定最大的数作为一条边,再用双指针 left 指向第一个数 , right 指向固定的最大的数的前一个数。当 nums[left] + nums[right] > 固定的最大数 , 将right指针右移;a + c > b;b + c > a;任意两个数大于第三个数就可构成三角形。其实不难发现,如果三个数 按照从大到小排序的话 , 只需满足 a+b > c 即可。直至固定的最大数 是数组第三个数结束位置。首先需要知道如何判断 三个数是否能构成三角形。611 有效三角形的个数。原创 2023-08-01 22:04:30 · 232 阅读 · 1 评论 -
刷题笔记 day3
让对应数值较小的指针移动一步,再次求其容积;直至两个指针相遇,从其求得容积中找出最大值就是本题要求的结果。思路: 定义两个指针 left(指向数组首端)和 right(指向数组尾部),来计算其容积;本题代码使用封装的函数和不使用封装函数的解法。11 盛水最多的容器。解法:使用对撞指针解题。2. 不使用封装函数的解法。原创 2023-07-31 22:16:24 · 158 阅读 · 1 评论 -
刷题笔记 day2
实现过程:最开始 cur 指向0,dest 指向 -1 , 当arr[cur]!= 0 时,dest 走两步 ,否则 走一步;判断dest是否已经处于数组最末端的位置 或者已经越界;第二步: 如果数组已经越界 ,让 arr[arr.size()-1] = 0;dest -= 2;第一步:利用指针 cur 去记录最后一位要复写的数 , 利用指针 dest 指向最后一位数所要复写的位置;第三步: 依次按要求从后往前完成复写。原创 2023-07-30 22:26:39 · 87 阅读 · 1 评论 -
刷题笔记:day 1
用来优化解法三的算法,解法三中,在指针cur 走到后面全零区间的第一个元素时,就已经满足题目要求的结果了,应当结束,但解法三多走了 x 步(x为数组nums中零元素的个数),因此需要记录数组非零元素的个数,当指针 cur 等于非零元素个数时,就结束循环。使用指针 cur 遍历数组 , 如果遇到零 , 删除当前位置的零元素,并在数组末尾插入一个零元素;定义一个指针 dest 去指向已处理区间中,非零的最后一个位置。同样使用双指针,i 和 j ,不过不是使用交换,而是将后面的非零元素覆盖前面的0元素。原创 2023-07-29 17:22:03 · 223 阅读 · 0 评论