您的位置:首页 > 其它

LeetCode 3Sum

2012-12-29 22:14 106 查看
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > triplet;
int len = num.size();

if (len < 3) {
return triplet;
}

sort(num.begin(), num.end());

int begin, end, sum;
bool left, right;
vector<int> temp;

for (int i = 0; i < len - 2; i++) {
if (i != 0 && num[i] == num[i - 1]) {
continue;
}

begin = i + 1;
end = len - 1;

while (begin < end) {
sum = num[begin] + num[end];

left = false;
right = false;

if (sum == -num[i]) {
temp.push_back(num[i]);
temp.push_back(num[begin]);
temp.push_back(num[end]);
triplet.push_back(temp);
temp.clear();

left = true;
right = true;
}
else if (sum > -num[i]) {
left = true;
}
else {
right = true;
}

if (right == true) {
begin++;
while (begin < len - 1 && num[begin] == num[begin - 1]) {
begin++;
}
}

if (left == true) {
end--;
while (end > i + 1 && num[end] == num[end + 1]) {
end--;
}
}
}

}

return triplet;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: