LeetCodeHot00 15.三数之和 C++版本代码 自用 无解析
·
题目

代码
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
//首先进行排序
sort(nums.begin(),nums.end());
vector<vector<int>>ans;//创建存储结果数组
for(int i = 0;i<nums.size()-2;i++)
{
int j = i+1;
int k = nums.size()-1;
if(i>0&&nums[i]==nums[i-1])
//while 里写 continue:i 不变,原地卡死,重复还照样算
//if 里写 continue:i 自动 ++,直接跳过重复项
continue;
while(j<k)
{
int sum = nums[i]+nums[j]+nums[k];
if(sum<0)
j++;
else if(sum>0)
k--;
else
{
ans.push_back({nums[i],nums[j],nums[k]});
j++;
while(j<k&&nums[j]==nums[j-1])
j++;
k--;
}
}
}
return ans;
}
};
思路参考Bilibili灵神的讲解http://【两数之和 三数之和【基础算法精讲 01】】https://www.bilibili.com/video/BV1bP411c7oJ?vd_source=05932f437c6d5e1af1e68ddc49baa55b这里不再过多赘述
更多推荐
所有评论(0)