灵神算法基础算法精讲[01] :
两数之和 三数之和【基础算法精讲 01】_哔哩哔哩_bilibili
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

- class Solution:
- def twoSum(self, numbers: List[int], target: int) -> List[int]:
- l = 0
- r = len(numbers)-1
- while True:
- s = numbers[l] + numbers[r]
- if s==target:
- break
- if s>target:
- r -= 1
- else :
- l += 1
- return [l+1,r+1]
- class Solution {
- public:
- vector<int> twoSum(vector<int>& numbers, int target) {
- int l=0,r=numbers.size()-1;
- while(true){
- int s = numbers[l]+numbers[r];
- if(s==target) break;
- if(s>target) r--;
- else l++;
- }
- return {l+1,r+1};
- }
- };
假设满足条件的三个数的下标分别为i , j, k,且默认i 先对数组进行排序,方便后面的操作 对i进行枚举,然后就是一个双指针的问题,令x=nums[i] , j=i+1 , k=n-1 ; 令 s = x + nums[j] + nums[k] , 剩下的就可以参考前一题中的思路: 1.如果s > 0 : k--; 2.如果s<0 : j++ 3.如果s=0 : 添加到结果中; 去重 : 分别对i,j,k去重; 优化 : 如果相邻的三数之和>0,那么就可以直接break了,因为后面的只会加大 如果nums[i]+nums[n-1]+nums[n-2]<0,那么就continue,因为这是以i为起点的情况下s的最大值,如果小于0,那么直接continue,跳到下一个 i 上; https://leetcode.cn/problems/3sum-closest/ 与三数之和类似,详情请看代码 : https://leetcode.cn/problems/4sum/description/ 思路 : 和之前思路一样,双指针即可,加上去重和剪枝即可!!! 双指针 双指针代码( python ):
代码( c++ ) :
习题 :
最接近的三数之和链接:
思路 :
四数之和 :
链接 :
代码 :
> fourSum(int[] nums, int target) {
> ans = new ArrayList<>();
统计和小于目标的下标对数目 :
链接 :
链接
https://leetcode.cn/problems/count-pairs-whose-sum-is-less-than-target/ 思路 :
代码 :
有效三角形的个数 :
链接 :
思路 :
代码 :
面试题-React(十六):理解Redux及其工作原理
java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
JavaScript的位操作符你知道吗?
vue之表单输入绑定
C语言中的 int main(int argc,char const *argv[])是什么意思?
多电商平台订单整合,库存同步ERP系统,为何不用电商API对接?
数字源表如何助力miniled光电性能测试
【冰糖R语言】实现贝叶斯优化 rBayesianOptimization
使用 PHP、PDO 和 MySQL 的 CRUD 应用程序