15. 3Sum
来源:互联网 发布:java面试 csdn 编辑:程序博客网 时间:2024/06/15 20:32
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:
Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)
The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4},
A solution set is:(-1, 0, 1)(-1, -1, 2)
O(n*n)
排好序之后
三个指针,i,j,k
遍历i,先固定i
然后j = i+1,k = length - 1;
j,k两个指针逼近,看加起来是否a[j] + a[k] = - a[i]
如果大于,k–
如果小于,j++
如果等于则把j,k分别移到不同的位置
再把i移到和之前不同的地方,重新开始
vector<vector<int> > threeSum(vector<int> &num) { vector<vector<int> > res; std::sort(num.begin(), num.end()); for (int i = 0; i < num.size(); i++) { int target = -num[i]; int front = i + 1; int back = num.size() - 1; while (front < back) { int sum = num[front] + num[back]; // Finding answer which start from number num[i] if (sum < target) front++; else if (sum > target) back--; else { vector<int> triplet(3, 0); triplet[0] = num[i]; triplet[1] = num[front]; triplet[2] = num[back]; res.push_back(triplet); // Processing duplicates of Number 2 // Rolling the front pointer to the next different number forwards while (front < back && num[front] == triplet[1]) front++; // Processing duplicates of Number 3 // Rolling the back pointer to the next different number backwards while (front < back && num[back] == triplet[2]) rear--; } } // Processing duplicates of Number 1 while (i + 1 < num.size() && num[i + 1] == num[i]) i++; } return res;}
0 0
- 15. 3Sum && 16 sum closet && 18 4sum
- 15. 3Sum 和 18. 4Sum
- 1. Two Sum&15. 3Sum
- LeetCode 15. 3Sum
- LeetCode --- 15. 3Sum
- [Leetcode] 15. 3Sum
- 【LeetCode】15. 3Sum
- 15. 3Sum
- 【leetcode】15. 3sum
- 【leetcode】15. 3Sum
- 15. 3Sum
- [leetcode] 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- leetcode 15. 3Sum
- makefile文件详解
- MySQL 语法
- 2.Activity异常情况下的生命周期分析学习笔记
- Spark: sortBy和sortByKey函数详解
- iOS-MD5加密32位扩展类
- 15. 3Sum
- Socket通讯原理
- 解决SSH自动断线,无响应的问题
- MATLAB中imfilter函数用Opencv 实现遇到的若干问题
- ButterKnife源码分析
- RxJava----操作符:条件和布尔操作符
- netty实例之路1
- Java协变数组和类型擦除
- centos下文件颜色