zoukankan      html  css  js  c++  java
  • LeetCode:组合总数III【216】

    LeetCode:组合总数III【216】

    题目描述

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

    说明:

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

    示例 1:

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

    示例 2:

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

    题目分析

      采用递归回溯框解题即可。

    Java题解

    class Solution {
          public List<List<Integer>> combinationSum3(int k, int n) {
            List<List<Integer>> ans =  new ArrayList<>();
            backtrack(ans,new ArrayList<>(),k,n,0,0,1);
            return ans;
        }
    
        public void backtrack(List<List<Integer>> list,List<Integer> tmpList,int k,int n,int curk,int curn,int num)
        {
            if(curn>n||curk>k)
                return;
            if(curk==k&&curn==n)
                list.add(new ArrayList<>(tmpList));
            else{
                for(int i=num;i<10;i++)
                {
                    tmpList.add(i);
                    backtrack(list,tmpList,k,n,curk+1,curn+i,i+1);
                    tmpList.remove(tmpList.size()-1);
                }
            }
        }
    }
    
  • 相关阅读:
    小球掉落
    String当中与转换相关常用的方法有
    字符串的截取方法
    golang 管道
    golang--协程之间通信的方式
    golang--goroutine
    go 时间操作
    吉格勒定理
    检视阅读
    git branch -a发现分支显示不全
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9967654.html
Copyright © 2011-2022 走看看