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

    LeetCode 216 组合总数III

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

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

    深度优先搜索DFS

    执行用时:1 ms, 在所有 Java 提交中击败了69.81%的用户
    内存消耗:37.2 MB, 在所有 Java 提交中击败了34.57%的用户

    class Solution {
        public List<List<Integer>> combinationSum3(int k, int n) {
            //边界情况
            if(k<=0 || n<=0 || n>k*9) {
                return new ArrayList<>();
            }
            //组合不能重复,每个数字只能用一次
            int[] candidates = new int[]{
                1,2,3,4,5,6,7,8,9
            };
            List<List<Integer>> results = new ArrayList<>();
            backtrace(results, new ArrayList<>(), candidates, -1, n, k);
            
            return results;
        }
    
        public void backtrace(List<List<Integer>> results, List<Integer> result, int[] candidates, int curr, int target, int k) {
            if(k==0 && target==0) {
                results.add(new ArrayList<Integer>(result));
                return;
            }
    
            for(int next=curr+1; next<candidates.length
                //剪枝
                &&candidates[next]<=target
                &&(candidates.length-next)>=k; next++) {
                result.add(candidates[next]);
                backtrace(results, result, candidates, next, target-candidates[next], k-1);
                result.remove(result.size()-1);
            }
    
            return;
        }
    }
    
  • 相关阅读:
    登录、注册、忘记密码 流程图
    用心每一天,不忘初心,方能走远
    HttpContext.Current.Request.ServerVariables
    Bootstrap实现弹出框和提示框效果代码
    jquery.each()
    js获取页面url
    jquery获取ul中的第一个li
    sql server 取文件名函数 转载
    jquery手风琴
    给母亲的信
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13649699.html
Copyright © 2011-2022 走看看