(java)3sum
来源:互联网 发布:网络mc第一红人大赛 编辑:程序博客网 时间:2024/05/16 02:24
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)
思路:本题是典型的k值相加的问题,暴力枚举是每个人都能想到的,但是时间复杂度为o(n^3),太高了,肯定是过不了的,本题可以先对数组排序然后设置一个定点,设置两个指针,一个指向这个定点的下一个位置L,一个指向数组的最后一个位置R,当结果大于target时,R--,当结果小于target时,L++;这样整个算法的时间复杂度是排序的o(nlgn)+o(n^2);
代码如下(已通过leetcode)
public class Solution {List<List<Integer>> lists= new ArrayList<List<Integer>>(); public List<List<Integer>> threeSum(int[] nums) { if(nums==null) return null; int length=nums.length; Arrays.sort(nums); for(int i=0;i<length-2;i++) { if(i>0 && nums[i]==nums[i-1]) continue; findit(nums,i+1,length-1,nums[i]); } return lists; } public void findit(int[] nums,int begin,int end,int target) { int l=begin; int r=end; while(l<r) { if(nums[l]+nums[r]+target==0) { List<Integer> list= new ArrayList<Integer>(); list.add(target); list.add(nums[l]); list.add(nums[r]); lists.add(list); while(l<r && nums[l]==nums[l+1]) l++; while(l<r && nums[r]==nums[r-1]) r--; l++; r--; } else { if(nums[l]+nums[r]+target<0) l++; else r--; } } }}
0 0
- [Leetcode] 3Sum (Java)
- 3Sum Java
- 3Sum Closest Java
- 3Sum (Java)
- 3Sum Closest (Java)
- [LeetCode][Java] 3Sum
- (java)3sum
- LeetCode : 3Sum [java]
- Java-LeetCode-3Sum
- 3Sum java leetcode
- leetcode 3Sum(Java)
- 3 Sum leetcode java
- (java)求3sum和4sum
- [LeetCode Java] 15 3 Sum
- [LeetCode][Java] 3Sum Closest
- [leetcode-15]3Sum(java)
- (java)leetcode 3sum cloest
- LeetCode 3Sum 求和 java
- 从”JAVA“而终 12:java集合框架API讲解
- hadoop技术原理
- Android入门---ImageView(图像视图)
- 分治法之合并排序(C实现)
- log4j.properties文件的配置不起作用
- (java)3sum
- UITableview reloadData 无效
- 9.5 编辑类
- Android 通过WiFi连接adb
- python3用pillow生成验证码,tornado中输出图片
- div随鼠标移动
- Unity3d使用高通Vuforia发布IOS工程遇见缺少插件问题解决
- ReactiveCocoa2 源码浅析
- Android保存图片到系统图库 或者指定文件夹