沧州网站建设icp备,如何做产品网站网页,郑州软件开发公司网站,数据线东莞网站建设技术支持来了来了#xff0c;他来了#xff0c;又是学习算法的一天~
今天的嘉宾是中等难度的算法题----三数之和#xff01; ------------------------------------------begin------------------------------------
题目解析#xff1a; 哇趣#xff01;又是给了一个数组#…来了来了他来了又是学习算法的一天~
今天的嘉宾是中等难度的算法题----三数之和 ------------------------------------------begin------------------------------------
题目解析 哇趣又是给了一个数组又是需要我们在一个数组中进行操作但这次不是二元那么简单了而
是三元~ 讲解算法原理
方法一肯定还是暴力解法啦直接三个for循环编译时间复杂度直接爆炸包不通过的~所以
不推荐
方法二基于暴力算法我们才可以进行优化算法还是需要我们的老朋友left和right指针来进行
编译同样我们需要多加一个对象来固定一个数题目要求三数相加为0所以我们可以定义一个
target来取所固定的相反数来与left和right位置的值的和来进行比较判断~ 编写代码
class Solution
{
public:vectorvectorint threeSum(vectorint nums) {vectorvectorintret;sort(nums.begin(),nums.end());int nnums.size();for(int i0;in;){if(nums[i]0){break;}int lefti1,rightn-1,target-nums[i];while(leftright){int sumnums[left]nums[right];if(sumtarget){right--;}else if(sumtarget){left;}else{ret.push_back({nums[i],nums[left],nums[right]});right--;left;while(leftrightnums[right]nums[right1]){right--;} while(leftrightnums[left]nums[left-1]){left;}}}i;while(innums[i]nums[i-1]){i;}}return ret;}
}; 题目还是有点复杂的不过多画图还是有用的哦~ 题目直达-
15. 三数之和 - 力扣LeetCode
------------------------------------------end--------------------------------------