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);    
            }
        }
    }
  • 相关阅读:
    Linux unalias命令 取消别名
    linux cp 拷贝文件或目录
    POJ 1850
    POJ 1844
    POJ 1852
    POJ 1837
    POJ 1833
    POJ 1804
    POJ 1789
    POJ 1781
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12320763.html
Copyright © 2011-2022 走看看