Android訊息機制分析
阿新 • • 發佈:2022-05-30
Java回溯版(超時)
package leetcode; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class demo_18 { public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> list=new ArrayList<List<Integer>>(); Arrays.sort(nums);long sum=0; backtrack(list, new ArrayList<Integer>(), sum, target, nums, 0); System.out.println(list); return list; } public void backtrack(List<List<Integer>> list,List<Integer> alist,long sum,int target,int nums[],int j) { if(sum==target&&alist.size()==4) { list.add(new ArrayList<Integer>(alist)); } else { for(int i=j;i<nums.length;i++) { if(i>j&&nums[i]==nums[i-1]) {continue;} j=i; if(alist.size()<4) { sum=sum+nums[i]; alist.add(nums[i]); backtrack(list, alist, sum, target, nums, j+1); alist.remove(alist.size()-1); sum=sum-nums[i]; } else { break; } } } } public static void main(String[] args) { // TODO Auto-generated method stub demo_18 d18=new demo_18(); int nums[]= {1,0,-1,0,-2,2,0,0,0}; d18.fourSum(nums, 0); } }