[LeetCode] 3Sum的O(N^2)解法
来源:互联网 发布:《大数据思维与决策》 编辑:程序博客网 时间:2024/05/28 23:10
问题如下:
3Sum Problem in LeetCode
代码如下:
public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> ll = new LinkedList<List<Integer>>(); if(nums.length<3) return ll; Arrays.sort(nums); for(int i=0;i<nums.length-2;i++){ if(i==0 || (i>0 && nums[i]!=nums[i-1])){ int left = i+1, right = nums.length-1, sum = 0 - nums[i]; while(left<right){ if(nums[left]+nums[right] == sum) { ll.add(Arrays.asList(nums[left],nums[right],nums[i])); //考虑重复的情况 while(left<right && nums[left] == nums[left+1]) left++; while(left<right && nums[right] == nums[right-1]) right--; left++;right--; } else if (nums[left]+nums[right] > sum) right--; else left++; } } } return ll; }
这题的思路是利用公式 a+b+c=0 –>c = 0-b-c;
思路源自于算法(第四版)的2Sum方法。借鉴于Leetcode的Discussion。
由于是有序排列的,可以依据快速排序的思路,根据结果控制左加或者右减,感觉了解快排原理的童鞋都应该能看懂
阅读全文
0 0
- [LeetCode] 3Sum的O(N^2)解法
- LeetCode Maximum Gap的O(N)解法
- 3Sum | LeetCode O(N*N) Solution
- leetcode题目 寻找和为SUM的两数(O(nlogn)和O(n)解法)
- [leetcode]leetcode第一题 1. Two Sum java O(n)解法
- LeetCode Longest Valid Parentheses的O(N)解法
- LeetCode Two Sum时间复杂度O(n)解法尝试版本1
- LeetCode题解:Longest Increasing Subsequence O(N^2解法)
- leetcode Longest Valid Parentheses O(n)解法
- leetcode: Merge Sorted Array O(n)解法
- 如何实现O(n)的2-sum
- 【leetcode with java】18 4Sum O(n^2)
- leetcode-3sum(n^2)
- Leetcode - Array - 1. Two Sum (水题,O[n]和O[n^2]实现)
- 3Sum leetcode解法 分析
- C++ Fibonacci数列 O(2^n) 和 O(n)解法
- Leetcode Median of two sorted arrays 的非递归O(m+n) C语言解法
- Leetcode 287. Find the Duplicate Number O(n)解法和O(nlogn)解法
- 递推和递归一
- 剑指offer:数组中重复的数字
- 用两个栈实现队列java实现
- yum 和 rpm安装mysql彻底删除
- JAVA对象的创建过程
- [LeetCode] 3Sum的O(N^2)解法
- R:绘图——药物剂量水平的响应情况
- 取石子(一)-OJ
- Ajax
- codevs 1036 商务旅行 LCA 解题报告
- LinkedList
- NLP深度学习 —— CS224学习笔记6
- Linux网络编程——UDP服务器和广播/组播
- spring JdbcTemplate