leetcode 3sum问题
来源:互联网 发布:720全景图制作软件 编辑:程序博客网 时间:2024/06/03 18:22
1、大家普遍的第一想法就是三个for循环,刚开始我也是这么做的,很遗憾,时间必超
2、算法思路:夹逼准则 时间复杂度为O(n^2)
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> result;
if(nums.size()<3)
return result;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-2;++i){
if(i==0||i>0&&nums[i]!=nums[i-1]){
int m=i+1;
int n=nums.size()-1;
int sum=nums[i]+nums[m]+nums[n];
while(m<n){
if(sum==0){
vector<int> temp;
temp.push_back(nums[i]);
temp.push_back(nums[m]);
temp.push_back(nums[n]);
result.push_back(temp);
while(m<n&&nums[m]==nums[m+1]){
++m;
}
while(m<n&&nums[n]==nums[n-1]){
--n;
}
++m;
--n;
sum=nums[i]+nums[m]+nums[n];
}
else if(sum<0){
++m;
sum=nums[i]+nums[m]+nums[n];
}else{
--n;
sum=nums[i]+nums[m]+nums[n];
}}
}
}
return result;
}
};
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
int size=nums.size();
vector<vector<int>> result;
if(size<3)
return result;
sort(nums.begin(),nums.end());
for(int i=0;i<size-2;++i){
if(i==0 || (i>0&&nums[i] != nums[i-1]) ){
int m=i+1;
int n=size-1;
int sum=0-nums[i];
while(m<n){
if(sum==nums[m]+nums[n]){
vector<int> temp;
temp.push_back(nums[i]);
temp.push_back(nums[m]);
temp.push_back(nums[n]);
result.push_back(temp);
while(m<n && nums[m]==nums[m+1]){
++m;
}
while(m<n & nums[n]==nums[n-1]){
--n;
}
m++;
n--;
}
else if(sum>nums[m]+nums[n]){
m++;
}
else{
n--;
}
}
}
}
return result;
}
};
- leetcode:3Sum问题
- leetcode 3sum问题
- leetcode 题解 || 3Sum 问题
- 【Leetcode】之3sum问题
- leetcode--ksum问题--3sum
- leetcode之3Sum问题
- leetcode 15 3sum问题
- 【Leetcode】3Sum (Sum)
- LeetCode: 3 Sum and 3Sum Closest问题
- Leetcode 3sumcloset, 3sum, 4sum问题详解
- LeetCode 求和问题总结(2sum,3sum,ksum)
- *LeetCode 3sum 3sum-closest 4sum k-sum类型 总结【待解决证明问题】
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- [leetcode] 求和问题总结(2Sum, 3Sum, 4Sum, K Sum)
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- leetcode-54. Spiral Matrix(打印蛇形矩阵)
- Swift--06数组字典
- 【腾讯Bugly干货分享】Android 插件技术实战总结
- 青蛙的约会(扩展欧几里得解同余方程)
- QT:标准对话框
- leetcode 3sum问题
- rxjava,okhttp 合并请求
- DAG上的动态规划硬币问题
- 软件设计目标—可维护性—基于面向对象技术的计算机程序
- 2017大学生程序设计邀请赛(华东师范大学) A.拼音魔法
- STM32-点亮LED灯(GPIO配置)
- PHP扩展
- FlexPaper
- 大数据:Android与IOS职位需求对比