zoukankan      html  css  js  c++  java
  • [LC] 216. 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.

    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]]
    

    Example 2:

    Input: k = 3, n = 9
    Output: [[1,2,6], [1,3,5], [2,3,4]]

    class Solution {
        public List<List<Integer>> combinationSum3(int k, int n) {
             List<List<Integer>> arrList = new ArrayList<>();
            List<Integer> list = new ArrayList<>();
            helper(arrList, list, 0, 1, k, n);
            return arrList;
        }
        
        private void helper(List<List<Integer>> arrList, List<Integer> list, int preSum, int index, int k, int n) {
            if (k == 0) {
                if (preSum == n) {
                    arrList.add(new ArrayList<>(list));
                }
                return;
            }
            
            for (int i = index; i < 10; i++) {
                list.add(i);
                helper(arrList, list, preSum + i, i + 1, k - 1, n);
                list.remove(list.size() - 1);    
            }
        }
    }
  • 相关阅读:
    二人组
    对于软件工程的理解
    shell 远程链接
    shell变量
    shell教程
    正则表达式--练习
    git--版本库
    git-版本回退
    git--时光穿梭
    git安装
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12320763.html
Copyright © 2011-2022 走看看