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