LeetCode #18 四数之和

class Solution {
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        vector<vector<int>> ans;
        if(nums.size()<4){
            return ans;
        }
        sort(nums.begin(),nums.end());
        int i,j,k,l,t;
        i=0;
        while(i<nums.size()-3){
            j=i+1;
            while(j<nums.size()-2){
                k=j+1;
                l=nums.size()-1;
                t=target-nums[i]-nums[j];
                while(k<l){
                    if(nums[k]+nums[l]==t){
                        ans.push_back({nums[i],nums[j],nums[k],nums[l]});
                        do{
                            k++;
                        }while(nums[k-1]==nums[k]&&l>k);
                        do{
                            l--;
                        }while(nums[l+1]==nums[l]&&l>k);
                    }
                    else{
                        if(nums[k]+nums[l]>t){
                            l--;
                        }
                        else{
                            k++;
                        }
                    }
                }
                do{
                    j++;
                }while(nums[j-1]==nums[j]&&j<nums.size()-2);
            }
            do{
                i++;
            }while(nums[i-1]==nums[i]&&i<nums.size()-3);
        }
        return ans;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,...
    LeeYunFeng阅读 860评论 0 48
  • 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,...
    hekirakuno阅读 151评论 0 0
  • 题目描述 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素...
    河海中最菜阅读 268评论 0 0
  • 18 4Sum 四数之和 Description:Given an array nums of n integer...
    air_melt阅读 48评论 0 0
  • 前记 十几年前,因为跑步而开始了写字,断断续续地写着,写了很多字,那时的劲头,似乎有着要把原来几十年不曾写,没有写...
    斧正堂阅读 385评论 2 10