zoukankan      html  css  js  c++  java
  • leetcode 216. Combination Sum III 求和III ---------- java

    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.


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

    由于限定了1-9所以比较简单,枚举就可以。让答案数组升序排列,然后向里面放入数就可以了。

    tips:用数组要比用ArrayList快。

    public class Solution {
        public List<List<Integer>> list;
        public List<List<Integer>> combinationSum3(int k, int n) {
            list = new ArrayList();
            if (n > (18 - k + 1) * k / 2 || n < (1 + k) * k / 2 || k > 9){
                return list;
            }
            int[] nums = new int[k];
            for (int i = 1; i <= 10 - k; i++){
                nums[0] = i;
                getSum(nums, n, 0, k - 1);
            }
            return list;
        }
        public void getSum(int[] ans, int n, int pos, int k){
            if (k == 0){
                int sum = 0;
                for (int i = 0; i < ans.length; i++){
                    sum += ans[i];
                }
                if (sum == n){
                    List<Integer> ll = new ArrayList();
                    for (int i : ans){
                        ll.add(i);
                    }
                    list.add(ll);
                }
                return ;
            }
            for (int i = ans[pos] + 1; i <= 10 - k; i++){
                ans[pos + 1] = i;
                getSum(ans, n, pos + 1, k - 1);
            }
        }
        
    }
  • 相关阅读:
    字段名删不掉
    刷新f5/ctrl+f5
    大量数据模拟
    sub_query join drupal7 view_query_alter
    测试风格的代码
    csv/excel乱码
    window.location.reload(true)的异步现象
    扫描条形码
    yield %%% generator
    batch example
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/6646917.html
Copyright © 2011-2022 走看看