3Sum
来源:互联网 发布:优化布林线 编辑:程序博客网 时间:2024/06/17 15:16
原题链接
给一个拥有n个元素的数组S,S中是否会有a,b,c三个元素使得a+b+c=0?寻找出满足该条件的所有唯一三元组。
Note: 答案中必须不能含有重复的三元组
class Solution { public List<List<Integer>> threeSum(int[] num) { //先排序 Arrays.sort(num); //创造序列 List<List<Integer>> res = new LinkedList<>(); for (int i = 0; i < num.length-2; i++) { //遍历序列 //i > 0 && num[i] != num[i-1] 如果不是开头则需要额外判断,避免重复的元素开头 if (i == 0 || (i > 0 && num[i] != num[i-1])) { //类似二分法移动索引 int lo = i+1, hi = num.length-1, sum = 0 - num[i]; while (lo < hi) { //如果求和正好为sum if (num[lo] + num[hi] == sum) { //答案加入结果序列 res.add(Arrays.asList(num[i], num[lo], num[hi])); //避免重复元素添加进结果集,变相去重 while (lo < hi && num[lo] == num[lo+1]) lo++; while (lo < hi && num[hi] == num[hi-1]) hi--; //while循环会多加减一次,反操作 lo++; hi--; } //如果求和小于0, 增大lo索引,使得求和变大 else if (num[lo] + num[hi] < sum) lo++; //反之减少hi索引,使得求和变小 else hi--; } } } return res; }}
本解法:时间复杂度O(N^2)
阅读全文
0 0
- Two Sum && 3 Sum
- 【Leetcode】3Sum (Sum)
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- leetcode 2 sum 3sum 4sum
- 2Sum 3Sum 4Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 3Sum
- 3SUM
- 3-sum
- 3Sum
- 3Sum
- 3Sum
- 3Sum
- python:利用pandas进行绘图(总结)绘图工具
- Android蓝牙socket实现视频实时传输,以及图片和文本传输
- js获取手机ip
- easyui加载combobox
- 链表问题 在单链表和双链表中删除倒数第K个节点
- 3Sum
- Linux网络编程--(1)网络体系架构
- Kafka LEADER_NOT_AVAILABLE问题解决
- HTTP请求行、请求头、请求体详解
- 多个按钮调用同一个方法
- HDU4069-Squiggly Sudoku
- 超前-滞后型DPLL提取位同步时钟的FPGA实现
- LeetCode 452 射气球问题
- SSL2810 2017年10月30日提高组T2 数论(math)