zoukankan      html  css  js  c++  java
  • LeetCode 77 组合

    LeetCode 77 组合

    问题描述:
    给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。
    组合:对于任意两个数,其组合形式只有一种

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

    class Solution {
        public List<List<Integer>> combine(int n, int k) {
            List<List<Integer>> combinations = new ArrayList<>();
            List<Integer> combineList = new ArrayList<>();
            backtracking(combineList, combinations, 1, k, n);
            return combinations;
    }
    
    private void backtracking(List<Integer> combineList, List<List<Integer>> combinations, int start, int k, final int n) {
        if (k == 0) {
            combinations.add(new ArrayList<>(combineList));
            return;
        }
        /*每次从当前位置start顺序往后取数一避免重复*/
        /*i<=n-k+1确保从start开始能够取到k个数*/
        for (int i = start; i <= n - k + 1; i++) {  // 剪枝
            combineList.add(i);
            backtracking(combineList, combinations, i + 1, k - 1, n);
            combineList.remove(combineList.size() - 1);
        }
    }
    }
    
  • 相关阅读:
    15、事例十五:纹理映射
    14、事例十四:材质:十二个材质球
    [luogu]P1084 疫情控制
    [luogu]P2502 [HAOI2006]旅行
    [luogu]P2053 [SCOI2007]修车
    线性相关/线性基
    [luogu]P3629 [APIO2010]巡逻
    [luogu]P3623 [APIO2008]免费道路
    权值线段树
    树链剖分
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13630468.html
Copyright © 2011-2022 走看看