zoukankan      html  css  js  c++  java
  • 216. Combination Sum III

    package LeetCode_216
    
    /**
     * 216. Combination Sum III
     * https://leetcode.com/problems/combination-sum-iii/description/
     *
     * 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.
    
    Note:
    All numbers will be positive integers.
    The solution set must not contain duplicate combinations.
    
    Example 1:
    Input: k = 3, n = 7
    Output: [[1,2,4]]
     * */
    class Solution {
        fun combinationSum3(k: Int, n: Int): List<List<Int>> {
            //bfs
            val candidates = intArrayOf(1,2,3,4,5,6,7,8,9)
            val result = ArrayList<ArrayList<Int>>()
            dfs(result, candidates, 0, ArrayList<Int>(), n,k)
            return result
        }
    
        private fun dfs(result: ArrayList<ArrayList<Int>>, candidates: IntArray, s: Int, cur: ArrayList<Int>, target: Int, k:Int) {
            if (target == 0 && cur.size==k) {
                result.add(ArrayList(cur))
                return
            }
            for (i in s until candidates.size) {
                //pruning
                if (candidates[i] > target) {
                    return
                }
                cur.add(candidates[i])
                //use i+1, because each combination should be a unique set of numbers, so cannot use number used last level
                dfs(result, candidates, i+1, cur, target - candidates[i], k)
                cur.removeAt(cur.size - 1)
            }
        }
    }
  • 相关阅读:
    腾讯云短信接口完成验证码功能
    git使用的简要介绍
    drf分页组件补充
    drf中的jwt使用与手动签发效验
    django的认证演变过程分析
    drf三大认证补充
    drf三大认证
    IO事件
    配置Java环境变量
    各种O
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12972232.html
Copyright © 2011-2022 走看看