Redian新闻
>
请问大牛leetcode 3Sum 和4sum的问题
avatar
请问大牛leetcode 3Sum 和4sum的问题# JobHunting - 待字闺中
a*e
1
请问大牛,这两道题在skip 相同元素的时候,为什么要用类似
if(x < num.size()-1 & num[x] == num[x+1]) continue; // Skip same
x
而不是 // if( num[x] == num[x-1]) continue;
我自己写的时候是comment out的语句,但总是出错。没搞懂为啥
3sum的代码如下。非常感谢!
vector > threeSum(vector &num) {
vector> result;
sort(num.begin(), num.end());
for (int x = num.size()-1; x >=2; x--) { // Do it backwards
if(x < num.size()-1 & num[x] == num[x+1]) continue; // Skip same
x
// if( num[x] == num[x-1]) continue;
for (int y = 0, z = x-1; y < z;) {
if(y>0 && num[y]==num[y-1]) { // Skip same y
// if( num[y]==num[y+1]) {
y++;
continue;
}
if(zz--;
continue;
}
int s = num[x] + num[y] + num[z];
if (s > 0)
z--;
if (s < 0)
y++;
if (s == 0) {
vector tmpOne(3);
tmpOne[0] = num[y];
tmpOne[1] = num[z];
tmpOne[2] = num[x];
result.push_back(tmpOne);
y++;z--;
}
}
}
return result;
}
avatar
l*s
2
因为你这个循环是从大往小循环的,当前这个要和前面一个就是+1位置的比较
,你要是循环从小往大,就可以用你自己的那个

【在 a***e 的大作中提到】
: 请问大牛,这两道题在skip 相同元素的时候,为什么要用类似
: if(x < num.size()-1 & num[x] == num[x+1]) continue; // Skip same
: x
: 而不是 // if( num[x] == num[x-1]) continue;
: 我自己写的时候是comment out的语句,但总是出错。没搞懂为啥
: 3sum的代码如下。非常感谢!
: vector > threeSum(vector &num) {
: vector> result;
: sort(num.begin(), num.end());
: for (int x = num.size()-1; x >=2; x--) { // Do it backwards

avatar
z*8
3
楼上说的对 X-- 不是X++
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。