【EB3 2015年一月第3绿】代同事报绿,EB3新年第三绿。# EB23 - 劳工卡
q*m
1 楼
难道是因为用了 std::sort ?
class Solution {
public:
vector > threeSum(vector &num) {
vector > *set = new vector >;
vector a(num);
sort(a.begin(), a.end());
vector b(num);
for(int k = 0; k < a.size(); ++k)
{
int c = a[k];
for(int j = 0; j < b.size(); ++j)
{
b[j] = -c - a[j];
}
int i = 0;
int j = b.size() -1 ;
while(i < a.size() && j > -1)
{
if (a[i] == b[j])
{
if(i == j)
{
++i;
--j;
continue;
}
if( i == k)
{
++i;
--j;
continue;
}
if( j == k)
{
++i;
--j;
continue;
}
int e = (i < j) ? i : j;
int f = i + j - e ;
int g;
if(k > f)
{
g = k;
}
else if(k > e)
{
g = f;
f = k;
}
else
{
g = f;
f = e;
e = k;
}
vector tmp;
tmp.push_back(a[e]);
tmp.push_back(a[f]);
tmp.push_back(a[g]);
if(find(set->begin(), set->end(), tmp) == set->end())
{
set->push_back(tmp);
}
++i;
--j;
}
else if(a[i] < b[j])
{
++i;
}
else
{
--j;
}
}
}
return *set;
}
};
class Solution {
public:
vector
vector
vector
sort(a.begin(), a.end());
vector
for(int k = 0; k < a.size(); ++k)
{
int c = a[k];
for(int j = 0; j < b.size(); ++j)
{
b[j] = -c - a[j];
}
int i = 0;
int j = b.size() -1 ;
while(i < a.size() && j > -1)
{
if (a[i] == b[j])
{
if(i == j)
{
++i;
--j;
continue;
}
if( i == k)
{
++i;
--j;
continue;
}
if( j == k)
{
++i;
--j;
continue;
}
int e = (i < j) ? i : j;
int f = i + j - e ;
int g;
if(k > f)
{
g = k;
}
else if(k > e)
{
g = f;
f = k;
}
else
{
g = f;
f = e;
e = k;
}
vector
tmp.push_back(a[e]);
tmp.push_back(a[f]);
tmp.push_back(a[g]);
if(find(set->begin(), set->end(), tmp) == set->end())
{
set->push_back(tmp);
}
++i;
--j;
}
else if(a[i] < b[j])
{
++i;
}
else
{
--j;
}
}
}
return *set;
}
};