标签:
原题链接在这里:https://leetcode.com/problems/combination-sum-iii/
与Combination Sum II相似,不同的是中不是所有元素相加,只是k个元素相加。
所以在把item的copy 加到res前需要同时满足item.size() == k 和 target == 0两个条件。
AC Java:
1 public class Solution { 2 public List<List<Integer>> combinationSum3(int k, int n) { 3 List<List<Integer>> res = new ArrayList<List<Integer>>(); 4 if(k <= 0 || n <=0){ 5 return res; 6 } 7 int [] candidates = {1,2,3,4,5,6,7,8,9}; 8 helper(k,n,0,candidates,new ArrayList<Integer>(),res); 9 return res; 10 } 11 private void helper(int k, int n, int start, int [] candidates, List<Integer> item, List<List<Integer>> res){ 12 if(item.size() == k && n==0){ 13 res.add(new ArrayList<Integer>(item)); 14 return; 15 } 16 if(n<0 || item.size()>k){ 17 return; 18 } 19 for(int i = start; i<candidates.length; i++){ 20 item.add(candidates[i]); 21 helper(k,n-candidates[i],i+1,candidates,item,res); 22 item.remove(item.size()-1); 23 } 24 } 25 }
标签:
原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/4845355.html