LeetCode216. 组合总和 III

找出所有相加之和为 n 的 个数的组合组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。

说明:

  • 所有数字都是正整数。
  • 解集不能包含重复的组合。 

示例 1:

输入: k = 3, n = 7
输出: [[1,2,4]]

示例 2:

输入: k = 3, n = 9
输出: [[1,2,6], [1,3,5], [2,3,4]]

思路:回溯算法。

class Solution {
    public List> combinationSum3(int k, int n) {
          List> res=new LinkedList>();//存储结果集
        List tmp=new LinkedList();  //临时存储找到的数
        boolean[] used=new boolean[9];                //用来判断该数是否已经使用过
        int nums[]={1,2,3,4,5,6,7,8,9};  
        combination(res,tmp,used,nums,k,n,0,0);
        return res;
    }
      /**
     * 
     * @param res  结果集
     * @param tmp  临时存储遍历到的数
     * @param used 用来判断该数是否已经使用
     * @param nums 0~9
     * @param k     个数
     * @param n     目标值和
     * @param sum   tmp链表中的数的和
     * @param index 索引位置
     */
     public  void combination(List> res, List tmp,boolean[] used,int[] nums,int k,int n,int sum,int index){
        if(tmp.size()==k){
            if(sum==n){
                res.add(new LinkedList(tmp));
            }
            return ;
        }
        for(int i=index;i

 

你可能感兴趣的:(leetcode,LeetCode题解)