- 博客(65)
- 收藏
- 关注
原创 四数之和
该文章介绍了一种解决四数之和问题的算法思路。主要采用排序+双重循环+双指针的方法:首先对数组排序,外层双重循环固定两个数a和b,内层使用双指针寻找满足条件的另外两个数(使四数之和等于目标值)。过程中需注意去重处理,避免重复四元组。代码实现时还加入了小优化:当数组元素不足四个或最小四个数之和已超过目标值时直接返回。该算法本质是在三数之和解法基础上增加了一层循环。
2025-09-09 18:05:27
265
原创 三数之和
本文介绍了一种利用双指针算法解决三数之和问题的方法。首先对数组排序,固定一个数后,使用左右指针在剩余区间寻找满足条件的另外两个数。通过跳过重复元素来避免重复解,同时包含优化处理:当固定数大于0时直接终止循环。代码实现部分展示了具体操作步骤,包括指针移动、结果存储和重复元素处理。该方法有效解决了三数之和问题,时间复杂度为O(n²)。
2025-09-08 21:49:36
486
原创 查找总价格为目标值的两个商品
摘要:该题目要求在一个升序数组中找出两数之和等于目标值的组合。解题思路采用双指针法,利用数组单调性优化搜索:左指针从数组头开始,右指针从数组尾开始。若两数之和小于目标值,则左指针右移;若大于目标值,则右指针左移;若相等则返回结果。该方法时间复杂度为O(n),比暴力枚举更高效。代码实现简洁明了,未找到匹配时返回空数组。
2025-09-07 15:36:40
238
原创 有效三角形的个数(数组单调性)
本文介绍了两种解决三角形三元组计数问题的方法。暴力枚举法通过三层循环实现,但时间复杂度达O(n³)效率较低。优化解法采用排序+双指针策略:先排序数组,固定最大元素后,用左右指针扫描较小元素。当两小边之和大于第三边时,直接统计中间所有可能组合并右移指针;否则左移指针。该算法显著提升了效率,时间复杂度主要取决于排序步骤。代码实现展示了如何通过Arrays.sort()和双指针遍历来高效解决问题。
2025-09-06 14:03:23
428
原创 盛最多水的容器
本文介绍了求解容器最大容积问题的双指针解法。题目要求计算数组中两个元素作为桶壁时,其高度和宽度的最大乘积。先分析暴力枚举法会超时,进而提出双指针优化方案:初始化左右指针分别指向数组两端,计算当前容积后,移动较小值的指针,逐步缩小范围。通过保持较高的桶壁来确保可能的更大容积,避免不必要的计算。该方法显著提高了效率,时间复杂度为O(n)。代码实现简洁明了,通过比较左右指针的值决定移动方向,并实时更新最大容积值。
2025-09-05 20:10:06
424
原创 快乐数(双指针)
摘要:本文介绍了一种判断快乐数(最终能变为1的数字)的算法。使用双指针法,定义快慢指针从初始数字n出发,慢指针每次计算一次数字各位平方和,快指针计算两次。通过循环直到两指针相遇,若结果为1则是快乐数,否则不是。代码实现了平方和计算函数add()和判断函数isHappy(),通过do-while循环和最终值比较完成判定。该方法巧妙利用了快慢指针在循环序列中的特性,有效解决了快乐数判定问题。
2025-09-04 17:07:47
195
原创 复写零(双指针)
摘要:本文介绍了处理数组中零元素复制的算法思路。使用双指针法,先确定最后一个要复写的元素位置,处理可能的越界情况。然后从后往前遍历数组,遇到零时复制两个零,非零元素则直接移动。特殊情况下需调整指针位置以避免越界。代码实现分为三步:确定复写位置、处理边界条件、执行反向复写操作。该算法能高效完成零元素的复制和数组重排任务。
2025-09-03 21:00:07
408
原创 移动零(双指针算法)
摘要:本文介绍了一种原地移动零元素的算法。使用双指针法,将数组分为非零区、零区和待处理区。dest指针标记非零区末尾,cur指针遍历数组。当cur遇到非零元素时,与dest+1位置的元素交换,保持非零元素相对顺序。时间复杂度O(n),空间复杂度O(1),无需额外数组空间。
2025-09-02 20:42:44
150
原创 UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器
UDP数据包和TCP数据包的区别;网络编程套接字;不同协议的回显服务器
2025-05-01 15:57:33
1883
32
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人