LeetCode-13Sum
来源:互联网 发布:蜡烛图分析软件 编辑:程序博客网 时间:2024/05/25 18:12
一、问题描述
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Note: The solution set must not contain duplicate triplets.
二、思路分析先对S进行排序,建立三个索引 i, j, k;其中 i从0开始到size-2,j时刻比i大1,k从size-1开始,计算是sum = s[i]+s[j]+s[k],其中要消除重复,
循环i从0到size-2;
while循环直到j >= k;
每个循环有三种情况:
如果sum = 0, 则j++,k--;
如果sum < 0, 则j++;
如果sum > 0, 则k--;
三、代码
class Solution {public: vector< vector<int> > threeSum(vector<int>& nums) { int n = nums.size(); int temp; for (int i = 0; i < n; i++) { for (int j = 0; j < n-i-1; j++) { if (nums[j] > nums[j+1]) { temp = nums[j]; nums[j] = nums[j+1]; nums[j+1] = temp; } } } vector<int> res(3, 0); vector< vector<int> > rec; int j = 0, k = 0; for (int i = 0; i < n-2; ++i) { if (i > 0&&nums[i] == nums[i-1]) { continue; } j = i+1; k = n-1; while(j < k) { int sum = nums[i]+nums[j]+nums[k]; if (sum == 0) {res[0] = nums[i];res[1] = nums[j++];res[2] = nums[k--];rec.push_back(res);while (j < k&&nums[j] == nums[j-1]) {j++;}while (j < k&&nums[k] == nums[k+1]) {k--;} } else if(sum < 0) { j++; } else { k--; } } } return rec; }};
阅读全文
0 0
- LeetCode-13Sum
- 【Leetcode】Path Sum (Sum)
- 【Leetcode】Two Sum (Sum)
- 【Leetcode】3Sum (Sum)
- 【Leetcode】4Sum (Sum)
- leetcode:leetcode :Path Sum
- [LeetCode] 2011-03-13 Two Sum
- leetcode Path Sum && Path Sum ||
- Leetcode:2Sum,3Sum
- 【Leetcode】Path Sum II (Sum)
- 【Leetcode】3Sum Closest (Sum)
- leetcode 2 sum 3sum 4sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- [LeetCode] K sum(2Sum、3Sum、4Sum)
- leetcode--sum集合:2sum,3sum,4sum
- 数据库sql语句
- 筛法求素数
- Volley网络框架详解
- linux 如何杀掉 tty终端
- [LintCode]407.加一
- LeetCode-13Sum
- ASP.NET Core服务器综述
- Java实现:利用栈进行后缀表达式计算实例
- Python的基础知识点(二)
- 自定义复选框,复选框样式修改,重写复选框
- CCF之Z形扫描
- 帧动画的实现
- AutoPilot02(去哪儿2017校招真题) 无法AC
- linux设备和驱动加载的先后顺序