Leetcode刷题笔记题解(C++):18. 四数之和

Leetcode刷题笔记题解(C++):18. 四数之和_第1张图片

思路:

在三数之和的基础上加一层循环即可,注意跳过相等的元素。

代码如下,思路也可以看看我的注释:

class Solution {
public:
    vector> fourSum(vector& nums, int target) {
        //先从小到大进行排序
        sort(nums.begin(),nums.end());
        //存放结果
        vector> result;
        //数组大小
        int size=nums.size();
        //选择第一个数
        for(int a=0;a0&&nums[a]==nums[a-1])continue;
            //选第二个数
            for(int b=a+1;ba+1&&nums[b]==nums[b-1])continue;
                //选择第三个数和第四个数,一个在左,一个在右端
                int start=b+1,end=size-1;
                //进行查找比对sum
                while(starttarget) end--;
                    //如果sum==target
                    else{
                        //压入结果
                        result.push_back(vector{nums[a],nums[b],nums[start],nums[end]});
                        //如果下一个第三个数的值与当前第三个数相等则跳过
                        while(start

 

你可能感兴趣的:(Leetcode算法题解,c++,算法,leetcode,数据结构)