【LeetCode】18. 4Sum
题目:
思路:这题和15题很像,外层再加一个循环稍作修改即可
public class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> result=new ArrayList<List<Integer>>(); int len=nums.length; if(len<4) return result; int sum=0; Arrays.sort(nums); for(int i=0;i<len-3;i++){ if(4*nums[i]>target) break; if(i>0&&nums[i]==nums[i-1]) continue; for(int j=i+1;j<len-2;j++){ if(j-i-1>0&&nums[j]==nums[j-1]) continue; int begin=j+1,end=len-1; while(begin<end){ sum=nums[i]+nums[j]+nums[begin]+nums[end]; if(sum==target){ List<Integer> tem=new ArrayList<Integer>(); tem.add(nums[i]); tem.add(nums[j]); tem.add(nums[begin]); tem.add(nums[end]); result.add(tem); begin++;end--; while(begin<end&&nums[begin]==nums[begin-1]) begin++; while(begin<end&&nums[end]==nums[end+1]) end--; }else if(sum<target){ begin++; }else end--; } } } return result; } }