美文网首页
Leetcode 精选之搜索(组合)

Leetcode 精选之搜索(组合)

作者: Kevin_小飞象 | 来源:发表于2020-04-03 14:41 被阅读0次

    题目描述

    给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。

    示例:

    输入: n = 4, k = 2
    输出:
    [
      [2,4],
      [3,4],
      [2,3],
      [1,2],
      [1,3],
      [1,4],
    ]
    

    题目链接:力扣

    解题思路

    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;
            }
            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);
            }
        }
    }
    

    测试结果

    image.png

    相关文章

      网友评论

          本文标题:Leetcode 精选之搜索(组合)

          本文链接:https://www.haomeiwen.com/subject/jhbhphtx.html