leetcode 3sum# JobHunting - 待字闺中
x*0
1 楼
遇到一个奇怪的问题。对于同样的数据集,在自己的IDE上测试,没有任何问题,
leetcode的onlinejudge却报错。
例如:
leetcode online judge
input output expected
[0,0] [[0,0,0]] []
[1,2,-2,-1] [[-2,2,0],[-1,1,0]] []
[-1,0,1,2,-1,-4] [[-1,1,0]] [[-1,-1,2],[-1,0,1]]
在自己的IDE上,能够给出expected的答案。
下面是我的代码:
class Solution {
public:
vector > threeSum(vector &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
set > triples;
sort(num.begin(), num.end());
for (int i = 0; i < num.size(); ++i) {
int j = i + 1;
int k = num.size();
int target = -num[i];
int duble = 0;
while (j < k) {
duble = num[j] + num[k];
if (duble > target) {
--k;
}
else if (duble < target) {
++j;
}
else {
vector cur;
cur.push_back(num[i]);
cur.push_back(num[j]);
cur.push_back(num[k]);
triples.insert(cur);
--k;
++j;
}
}
}
vector > result;
for (set >::iterator it = triples.begin(); it != triples
.end(); ++it) {
result.push_back(*it);
}
return result;
}
};
leetcode的onlinejudge却报错。
例如:
leetcode online judge
input output expected
[0,0] [[0,0,0]] []
[1,2,-2,-1] [[-2,2,0],[-1,1,0]] []
[-1,0,1,2,-1,-4] [[-1,1,0]] [[-1,-1,2],[-1,0,1]]
在自己的IDE上,能够给出expected的答案。
下面是我的代码:
class Solution {
public:
vector
// Start typing your C/C++ solution below
// DO NOT write int main() function
set
sort(num.begin(), num.end());
for (int i = 0; i < num.size(); ++i) {
int j = i + 1;
int k = num.size();
int target = -num[i];
int duble = 0;
while (j < k) {
duble = num[j] + num[k];
if (duble > target) {
--k;
}
else if (duble < target) {
++j;
}
else {
vector
cur.push_back(num[i]);
cur.push_back(num[j]);
cur.push_back(num[k]);
triples.insert(cur);
--k;
++j;
}
}
}
vector
for (set
.end(); ++it) {
result.push_back(*it);
}
return result;
}
};