leetcode习题解答: 15. 3Sum
来源:互联网 发布:太行发动机知乎 编辑:程序博客网 时间:2024/06/05 16:01
难度:medium
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.
For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]
思路:可以用3重循环来暴力破解,但是这样的话复杂度是O(n^3)
我们可以先排序数据,然后定住一个数,剩下的数做2Sum中的两端逼近的算法,这样算法的复杂度就变成了O(n^2)
代码:
#include <algorithm>#include <set>class Solution {public: vector<vector<int>> threeSum(vector<int>& num) { vector<int> nums = num; vector<vector<int>> result; set<vector<int>> s; sort(nums.begin(),nums.end()); for (int i = 0; i < nums.size(); i++){ int value = nums[i]; int begin = i+1; int end = nums.size()-1; while (begin < end){ if (nums[begin]+nums[end] == -value){ vector<int> temp({value,nums[begin],nums[end]}); if (s.find(temp) == s.end()){ result.push_back(temp); s.insert(temp); } end--; begin++; } else if (nums[begin]+nums[end] > -value){ end--; } else { begin++; } } } return result; }};
set是用来去重的
阅读全文
0 0
- leetcode习题解答: 15. 3Sum
- leetcode习题解答:16. 3Sum Closest
- leetcode习题解答:39. Combination Sum
- Leetcode习题:3Sum
- 3-sum leetcode经典解答
- Leetcode习题: Two Sum
- Leetcode习题:1. Two Sum
- Leetcode习题解答:31. Next Permutation
- leetcode习题解答:5. Longest Palindromic Substring
- leetcode习题解答:32. Longest Valid Parentheses
- leetcode习题解答:6. ZigZag Conversion
- leetcode习题解答:10. Regular Expression Matching
- Leetcode习题解答:44. Wildcard Matching
- leetcode习题解答:72. Edit Distance
- leetcode习题解答:37. Sudoku Solver
- leetcode习题解答:45. Jump Game II
- Leetcode习题记录——3Sum Closest
- LeetCode-two sum:python解答数组问题
- Cassandra二级索引原理
- TensorFlow架构与设计:OP本质论
- Codis的安装与使用
- kmeans及kmeans++讲解
- greenDao的基本使用
- leetcode习题解答: 15. 3Sum
- PAT 1003. 我要通过!(20)
- 使用QWidget画圆环图的几种方法
- golang channel 的使用
- 对象间的联动——观察者模式(四)
- 分析css中的position属性和z-index属性
- 芒果网总结
- 还记得 Flappy Bird 么?这篇文章教你如何用神经网络破朋友圈纪录!
- code force 449 div2 C. Nephren gives a riddle