双指针算法
文章平均质量分 63
明 日 香
快和我一起快乐学习
展开
-
双指针算法_三数之和
给定一个整数数组 nums ,判断是否存在三元组nums[i]、nums[j]、nums[k],满足 i!=j 且 i!=k 且 j!=k也就是同一个位置只能选择一次!,且还要满足三个数相加等于0,同一个位置只能选择一次!答案中不可以包含重复的三元组、如下图所示,虽然有三组,但是其中两组虽然顺序不一样但是内部的数值是一样的也不行!原创 2024-03-28 15:08:12 · 306 阅读 · 0 评论 -
双指针算法_和为 s 的两个数_C++
输入一个的数组,和一个数字s,在数组中查找两个数,使得它们的和正好是数字s,如果有多对数字的和等于s,只需要任意输入一对即可。原创 2024-03-28 14:46:10 · 346 阅读 · 0 评论 -
双指针算法_盛水最多的容器
如图所示,一个数组内部存储的是高度,求数组中,能够组成最大容量的两个元素,需要注意的是容量是 高度*宽度,这里的宽度指的是两个数字之间的距离,且需要注意高度中,容量要变成最大容量和高度有关,两个数字中最小的那个 * 两个 数字之间的距离 =最大容量。先用指针指向左右两端,然后算出容量v1,随后使用左端的1进行查看是否和其他位置的数字计算出的容量比v1大,答案当然是没用,这是因为在高度不变(高度是1)的情况下变动了宽度(两个数字之间的距离),所以容量没用v1大。原创 2024-03-26 11:58:35 · 322 阅读 · 0 评论 -
双指针算法_快乐数
通过示例的图解可以看出,如果计算的过程中出现了1,那么就将会在1时进行持续的循环,使得变成一个1的循环,而如果在计算的过程中,没用出现1,则会在计算的过程中,得出某个结果和之前计算的结果一致,成为一个环状。所以最后可以得出,如果有出现1则会进入1的循环,如果没用出现1则一直循环都有1。 这题和判断链表是否有环很像!不过这里只要判断环里面的数字是否是1,所以可以采取判断链表是否有环的方法,使用快慢双指针。定义快慢指针的方法和判断链表循环的双指针方法一样,快指针每次移动两次,慢指针每次移动一次,当二者相遇时,判原创 2024-03-26 11:35:24 · 311 阅读 · 0 评论 -
双指针算法_复写零
通过示例和双数组模拟操作的过程,我们可以得出结论,如果使用双指针从左到右进行0的复写,那么势必会覆盖数组原有的元素,所以双指针进行操作的方向必须改变,变成从右到左,从后向前!继续使用双指针的操作,我们将dest定义为最后一个需要复写的位置,当前这里没有找到最后一个需要复写的位置,所以初始位置这里变成-1的位置,cur则是查看是0还是非0让dest向前1步还是两步。cur遇到非0,dest向前一步!同时判断dest是否在数组的末端,不是则cur继续往前走!原创 2024-03-16 10:20:05 · 685 阅读 · 21 评论 -
双指针算法_移动零_
同时不能通过复制数组,开辟新的数组空间的情况下原地对数组进行操作。原创 2024-03-16 09:12:09 · 496 阅读 · 1 评论