All unique 3 pair numbers that adds equal to target sum
class Solution
{
public:
vector<vector<int>> threeSum(vector<int> &a)
{
vector<vector<int>> vr;
int i, sum, j, x, k, n = a.size();
sum = 0;
sort(a.begin(), a.end());
for (i = 0; i < n; i++)
{
if (i != 0 && a[i] == a[i - 1])
continue;
x = sum - a[i];
j = i + 1;
k = n - 1;
while (j < k)
{
if (a[j] + a[k] == x)
{
vr.push_back({a[i], a[j], a[k]});
j++;
k--;
while (a[j] == a[j - 1] && j < k)
j++;
while (a[k] == a[k + 1] && j < k)
k -= 1;
}
else if (a[j] + a[k] > x)
{
k -= 1;
while (a[k] == a[k + 1] && j < k)
k -= 1;
}
else if (a[j] + a[k] < x)
{
j += 1;
while (a[j] == a[j - 1] && j < k)
j++;
}
}
}
return vr;
}
};
Comments
Post a Comment