
https://leetcode.com/problems/4sum/description/
输入: 数组 和 target
输出: 4个数字相加等于 target 的所有组合
和3sum 一样,多了个循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
class { public List<List<Integer>> fourSum(int[] nums, int target) { Arrays.sort(nums); List<List<Integer>> res=new ArrayList<List<Integer>>(); for(int i=0;i<nums.length-3;i++){ if(i>0&&nums[i]==nums[i-1]){ continue; } for(int j=i+1;j<nums.length-2;j++){ if(j>i+1&&nums[j]==nums[j-1]){ continue; } int k=j+1; int m=nums.length-1; while(k<m){ int sum = nums[i]+nums[j]+nums[k]+nums[m]; if(sum==target){ res.add(Arrays.asList(nums[i],nums[j],nums[k],nums[m])); while(m-1>=0&&nums[m]==nums[--m]); while(k+1<nums.length&&nums[k]==nums[++k]); }else if(sum>target){ m--; }else{ k++; } } } } return res; } }
|
近期评论