• 4Sum


    注意当有四个时,其实第一个和第二个性质等于三个数和时的第一个。

    class Solution {
    public:
        vector<vector<int>> fourSum(vector<int>& nums, int target) {
           vector<vector<int>> res;
           int i,j,k,l;
           if(nums.size()<4) return res;
           sort(nums.begin(),nums.end());
           for( i=0;i<nums.size()-3;i++)
           {
               if(i>0 &&nums[i]==nums[i-1]) continue;
               for(j=i+1;j<nums.size()-2;j++)
               {
                   if(j>i+1 &&nums[j]==nums[j-1]) continue;
                    k=j+1;
                    l=nums.size()-1;
                   while(k<l)
                   {
                     while(k<l &&nums[i]+nums[j]+nums[k]+nums[l]<target) k++;
                     while(k<l &&nums[i]+nums[j]+nums[k]+nums[l]>target) l--;
                     if(k<l &&nums[i]+nums[j]+nums[k]+nums[l]==target)
                     {
                         vector<int>tmp;
                         tmp.push_back(nums[i]);
                         tmp.push_back(nums[j]);
                         tmp.push_back(nums[k]);
                         tmp.push_back(nums[l]);
                         res.push_back(tmp);
                         k++;
                         while(nums[k]==nums[k-1]&&k<l) k++;
                         l--;
                         while(nums[l]==nums[l+1]&&k<l) l--;
                     }
                   }
               }
              
           }
           return res;
        }
    };
  • 相关阅读:
    张照行 的第九次作业
    张照行 的第八次作业
    Learning by doing
    张照行 的第七次作业
    张照行 的第六次作业
    Java第七次作业
    java第五次作业
    Java第七次作业
    Java第六次课后作业
    第五次Java作业
  • 原文地址:https://www.cnblogs.com/daocaorenblog/p/5232760.html
Copyright © 2020-2023  润新知