Given an array with numbers, your task is to find 4 numbers that will satisfy this equation:
A + B + C = D
A + B + C = D
vector<int> find3sum(vector<int> &num, int target){
vector<int> res1;
for(int i = 0; i < num.size(); ++i){
if(i && num[i] == num[i-1]) continue;
int j = i+1;
for(int k = num.size() -1; k > j; --k){
if(k < num.size() -1 && num[k] == num[k+1]) continue;
while(j < k && num[i] + num[j] + num[k] < target)
++j;
if(j < k && num[i] + num[j] + num[k] == target){
int a[] = {num[i],num[j],num[k]};
vector<int> res(a, a+3);
return res;
}
}
}
return res1;
}
vector<int> findABCD(int a[], int n){
vector<int> res;
if(n < 0) return res;
vector<int> num(a, a+n);
sort(num.begin(), num.end());
while(num.size() > 3){
int target = num.back();
num.pop_back();
vector<int> res = find3sum(num, target);
if(!res.empty()){
res.push_back(target);
return res;
}
}
return res;
}
No comments:
Post a Comment