3sum 4sum

Paste_Image.png

思路:

  1. 对数据进行排序
    2)为了得到非重复的三元组 不断移动哨兵位置
    时间复杂度为O(n*n)
    对于4 sum问题 其时间复杂度为O(n^3)
vector> threeSum(vector& nums) {
      
      vector> res;
      if(nums.size()<3)
      return res;
      sort(nums.begin(),nums.end());
      int left,right;
      for(int i=0;i hh={nums[i],nums[left],nums[right]};
                  //sort(hh.begin(),hh.end());
                  res.push_back(hh);
                  while(nums[left]==hh[1]&&lefttarget)
              {
                  right--;
                  continue;
              }
              if(temp
Paste_Image.png

思路:
1)将数据分为前后两部分
2)C、D数组数据相加后添加到unordered_map中,map键为和,值为个数
时间复杂度:O(n*n)

 int fourSumCount(vector& A, vector& B, vector& C, vector& D) {
        int N=A.size();
        vector dt;
        for(int i=0;i kk;
        for(int i=0;isecond;
        }
        return res;
    }

你可能感兴趣的:(3sum 4sum)