一、题目内容

image.png

二、题解

解法1:

思路

代码

  1. import java.util.*;
  2. public class Solution {
  3. private int[] nums;
  4. private ArrayList<Integer> tempAns;
  5. private ArrayList<ArrayList<Integer>> ans;
  6. private int target;
  7. public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
  8. this.tempAns = new ArrayList<Integer>();
  9. this.ans = new ArrayList<ArrayList<Integer>>();
  10. this.nums = num;
  11. this.target = target;
  12. Arrays.sort(nums);
  13. recur(0,0);
  14. return ans;
  15. }
  16. public void recur(int index, int sum){
  17. if(sum > target){
  18. return;
  19. }
  20. if(sum == target){
  21. ans.add(new ArrayList(tempAns));
  22. return;
  23. }
  24. for(int i = index; i<nums.length; i++){
  25. //移除重复
  26. if(i>index && nums[i] == nums[i-1]){
  27. continue;
  28. }
  29. tempAns.add(nums[i]);
  30. recur(i+1,sum+nums[i]);
  31. tempAns.remove(tempAns.size()-1);
  32. }
  33. }
  34. }