- 博客(5)
- 收藏
- 关注
原创 【力扣】15. 三数之和
搜索类问题首先,对原数组进行排序,方便后续双指针的使用以及跳过重复元素。外层循环枚举nums[i],问题变为找到nums[j]和nums[k]使得nums[i]+nums[j]+nums[k]==0。外层循环处理重复问题:如果nums[i]==nums[i-1],那么后面能和nums[i-1]相加为0的两个数与nums[i]也能相加为0。所以如果有nums[i]==nums[i-1]的情况,直接continue。
2025-12-23 14:37:07
547
原创 【力扣】917. 仅仅反转字母
对称操作类问题左指针left指向字符串开头,右指针right指向字符串末尾通过内层while循环,使得左指针left和右指针right指向的字符都是英文字母。随后交换两指针指向字符的位置交换操作结束后,要让左右指针各移动一步,进而找下一组字母最后,返回处理后的字符串。
2025-12-17 12:59:41
221
原创 【力扣】658. 找到K个最接近的元素
左指针left指向数组开头,右指针指向数组末尾当子数组[left, right]中的元素个数为k时,我们就认为找到了k个最接近的元素。将[left, right]中的元素添加到结果数组中。最后,返回结果数组result。
2025-11-25 11:39:23
298
原创 【力扣】1471.数组中的 k 个最强值
目前的经验来看,用双指针算法解决搜索类题目时可能使用left<=right的循环判断条件。就像本题我们要搜索k个最强值。为什么要使用等号的判断条件呢?我认为当整个数组可能满足题目条件时需要加等号判断条件。如果整个数组都满足题目要求时,当left==right时,也要添加这个数到结果数组中。以本题为例,当k==arr.size()时,显然原数组就是答案,那需要将整个arr数组元素添加到结果数组中。
2025-11-06 21:13:09
377
原创 【力扣】977.有序数组的平方
产生,每次比较两端的数大小就会得到定义域内最大值。那我们不妨想一想定义域在0的某一侧的情况,以在0右边为例。这时候每次比较肯定是右边的数大,那此时left指针就不动了,一直是right指针向左移动。这样我们也照样得到了合理的次序。
2025-11-04 15:09:58
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅