leetcode 15 3Sum
2016-09-19 20:51
363 查看
K Sum问题,第一次刷,没仔细想,超时超时,看了网上的思路后实现了,但是还是超时,在重复数据去掉的地方使用遍历出现超时,于是抄袭了网上的思路,惭愧
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> ans_vec;
int length = nums.size();
if(length<3)
return ans_vec;
int zero_position = length;
sort(nums.begin(),nums.end());
for(vector<int>::iterator it = nums.begin();it!=nums.end();it++)
{
if(*it == 0)
zero_position = it-nums.begin();
}
for(vector<int>::iterator it = nums.begin();it!=nums.begin()+zero_position;it++)
{
vector<int>::iterator it_s = it+1;
vector<int>::iterator it_end = nums.end()-1;
bool flag = false;
if (it > nums.begin() && *it == *(it-1)) //去重,如果没有这步,依然会出现重复数据
continue;
while (it_s<it_end)
{
int plus =*it_s + *it_end;
if (plus == -*it)
{
vector<int> c_ans;
c_ans.push_back(*it);
c_ans.push_back(*it_s);
c_ans.push_back(*it_end);
ans_vec.push_back(c_ans);
while (it_s < it_end && *it_s == *(it_s+1))//去重
it_s++;
while (it_s < it_end && *it_end == *(it_end-1)) //去重
it_end--;
it_s++, it_end--;
}
else if (plus < -*it)
it_s++;
else
it_end--;
}
}
return ans_vec;
}
vector<vector<int>> threeSum(vector<int>& nums)
{
vector<vector<int>> ans_vec;
int length = nums.size();
if(length<3)
return ans_vec;
int zero_position = length;
sort(nums.begin(),nums.end());
for(vector<int>::iterator it = nums.begin();it!=nums.end();it++)
{
if(*it == 0)
zero_position = it-nums.begin();
}
for(vector<int>::iterator it = nums.begin();it!=nums.begin()+zero_position;it++)
{
vector<int>::iterator it_s = it+1;
vector<int>::iterator it_end = nums.end()-1;
bool flag = false;
if (it > nums.begin() && *it == *(it-1)) //去重,如果没有这步,依然会出现重复数据
continue;
while (it_s<it_end)
{
int plus =*it_s + *it_end;
if (plus == -*it)
{
vector<int> c_ans;
c_ans.push_back(*it);
c_ans.push_back(*it_s);
c_ans.push_back(*it_end);
ans_vec.push_back(c_ans);
while (it_s < it_end && *it_s == *(it_s+1))//去重
it_s++;
while (it_s < it_end && *it_end == *(it_end-1)) //去重
it_end--;
it_s++, it_end--;
}
else if (plus < -*it)
it_s++;
else
it_end--;
}
}
return ans_vec;
}
相关文章推荐
- leetcode --15. 3Sum
- leetcode 15 3Sum
- 3Sum (leetcode 15)
- leetcode15:3Sum
- Leetcode 15 3Sum
- LeetCode(15) 3Sum
- [leetcode] 15. 3Sum 解题报告
- LeetCode - 15. 3Sum
- leetcode 15 3Sum
- leetcode-15-3sum
- leetcode解题之 15. 3Sum Java版(结果为目标值的三个数字)
- 3Sum - LeetCode 15
- LeetCode 15 3Sum
- [Leetcode] 15. 3Sum
- LeetCode题解-15-3Sum
- LeetCode之15----3Sum
- [LeetCode] 15. 3Sum
- Leetcode: 15. 3Sum
- leetcode-15-3sum
- leetcode 15 3Sum