题解 | #数组中相加和为0的三元组#
数组中相加和为0的三元组
http://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711
class Solution { public: vector<vector > threeSum(vector &num) { if (num.empty()) return {};
vector<vector<int> > res;
std::sort(num.begin(), num.end());
int i = 0, j = 1;
int k = num.size() - 1;
int prei = INT_MAX;
for (; i < num.size(); i++) {
if (num[i] > 0) break;
if (prei == num[i]) continue;
prei = num[i];
j = i+1;
k = num.size() - 1;
while (j < k) {
if (num[i] + num[j] > 0) break;
if (num[k] < 0) break;
int tmp = num[i] + num[j] + num[k];
if (0 == tmp) {
res.push_back({num[i], num[j],num[k]});
++j, --k;
while (j < k && num[j] == num[j-1]) ++j;
while (j < k && num[k] == num[k+1]) --k;
} else if (tmp > 0) {
k--;
} else {
j++;
}
}
}
return res;
}
};