[leetcode]15. 3Sum
来源:互联网 发布:2016中韩双边贸易数据 编辑:程序博客网 时间:2024/05/18 01:58
和4sum 一样,继续使用夹逼定理,不过需要排除重复
例如【4,-2,-2,2,2】target=0;只有【4,-2,2】,所以需要把重复的去掉
这不等同于【4,-2,-2,6,7】因为这时候只有【4,-2,-2】的-2 和-2 分别对应j,k
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(),nums.end()); vector<vector<int>> ret; int target=0; for(int i=0;i<nums.size();i++) { while(i > 0 && i < nums.size() && nums[i] == nums[i-1])// 因为之前超时,所以需要排重 i++; int j=i+1; int k=nums.size()-1; while(j<k) { int sum=nums[i]+nums[j]+nums[k]; if(sum==target) { vector<int>cur; cur.push_back(nums[i]); cur.push_back(nums[j]); cur.push_back(nums[k]); if(find(ret.begin(),ret.end(),cur)==ret.end()) ret.push_back(cur); j++; k--; while(j < k && nums[j] == nums[j-1])//继续排重 j ++; while(k > j && nums[k] == nums[k+1])//继续排重 k --; } else if(sum>target) { k--; while(k > j && nums[k] == nums[k+1])//继续排重 k --; } else { j++; while(j < k && nums[j] == nums[j-1])//继续排重 j ++; } } } return ret; }};
0 0
- LeetCode 15. 3Sum
- LeetCode --- 15. 3Sum
- [Leetcode] 15. 3Sum
- 【LeetCode】15. 3Sum
- 【leetcode】15. 3sum
- 【leetcode】15. 3Sum
- [leetcode] 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- Leetcode 15. 3Sum
- LeetCode - 15. 3Sum
- [LeetCode]15. 3Sum
- Leetcode 15. 3Sum
- leetcode 15. 3Sum
- leetcode 15. 3Sum
- 【leetcode】15. 3Sum
- Leetcode - 15. 3Sum
- C++中关于:文件包含太多,深度 = 1024
- linux永久修改主机名
- ITOO之界面显示、级联、模糊显示
- Vuejs——(8)Vuejs组件的定义
- 关于string,stringBuilder,stringBuffer
- [leetcode]15. 3Sum
- maven+springMVC+mysql+mybatis+velocity+事务整合
- 《自己动手写操作系统》学习笔记(五)
- mysql5.7安装和使用--CentOS操作系统
- 刷刷笔试题~~[矩阵]
- hive on spark VS SparkSQL VS hive on tez
- 创建和准备Oracle样例数据库
- 在mac中搭建asp.net环境并开发第一个程序
- 《自己动手写操作系统》学习笔记(四)