首页 > 其他 > 详细

[Leetcode] Combination Sum III

时间:2015-08-31 11:28:40      阅读:198      评论:0      收藏:0      [点我收藏+]

Combination Sum III

Find all possible combinations of k numbers that add up to a number n, given that only numbers from 1 to 9 can be used and each combination should be a unique set of numbers.

Ensure that numbers within the set are sorted in ascending order.

 

Example 1:

Input: k = 3, n = 7

Output:

[[1,2,4]]

 

Example 2:

Input: k = 3, n = 9

Output:

[[1,2,6], [1,3,5], [2,3,4]]
 1 import java.util.*;
 2 
 3 public class Solution {
 4     private void DFS(List<List<Integer>> res, List<Integer> nums,int start, List<Integer> tmpres, int tmpsum, int k, int n){
 5         System.out.println(tmpres);
 6         if(tmpres.size()==k&&tmpsum==n&&start==nums.size()){
 7             System.out.println("hello");
 8             List<Integer> copyres = new LinkedList<Integer>();
 9             copyres.addAll(tmpres);
10             res.add(copyres);
11             return;
12         }
13         //if(tmpres.size()>k||tmpsum>=n||start==nums.size()) return;
14         //使用上面的条件,会出现问题,关键是当达到相等的时候,应该继续递归
15         //原因是添加结果的条件是当start==nums.size()的时候
16         if(tmpres.size()>k||tmpsum>n||start==nums.size()) return;
17 
18         //add nums[start]
19         tmpres.add(nums.get(start));
20         DFS(res,nums,start+1,tmpres,tmpsum+nums.get(start),k,n);
21         tmpres.remove(tmpres.size()-1);
22         //skip nums[start]
23         DFS(res,nums,start+1,tmpres,tmpsum,k,n);
24     }
25     public List<List<Integer>> combinationSum3(int k, int n) {
26         List<List<Integer>> res = new LinkedList<List<Integer>>();
27         List<Integer> nums = new LinkedList<Integer>();
28         for(int i=1;i<=9;i++) nums.add(i);
29         List<Integer> tmpres = new LinkedList<Integer>();
30         DFS(res,nums,0,tmpres,0,k,n);
31         return res;
32     }
33 }

这里有一个掉入的陷阱,见代码注释

[Leetcode] Combination Sum III

原文:http://www.cnblogs.com/deepblueme/p/4772498.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!