关于公司网站改版通知,jmr119色带,wordpress即阅文教程,万维网的代表网站第一题: 454.四数相加II 题目 解答思路 我们要四数相加等于0一般的思路是暴力破解直接4个for循环,然后通过4个for循环得到答案, 但是这样的时间复杂度是O(n4),会超时然后我们通过将循环拆分,比如将 代码 第二题 :
题目: 代码
class Solution {
public:vectorvectorvectorint threeSum(vectorint nums) {int n nums.size();sort(nums.begin(),nums.end());vectorvectorintans;for(int fist 0;fistn;fist){if(fist0nums[fist]nums[fist-1]){continue;//剪支减少重复情况}//c对应的指针指向数组最右端int third n-1;int target-nums[fist];//枚举bfor(int second fist1;secondn;second){//需要和上次枚举数不相同if(secondfist1nums[second] nums[second-1]){continue;}//需要保证b指针在c指针的左侧while(secondthirdnums[second]nums[third]target){third--;}//如果指针重合,随b的后续增加if(second third){break;}if(nums[second]nums[third] target){ans.push_back({nums[fist],nums[second],nums[third]});}}}return ans;}
};
代码解析: 模块化三指针一个在头一个在除头的左端点,一个在右端点,然后头确定,左右端点移动确定俩数,最后返回三个元素