美文网首页算法学习
算法题--组合选取

算法题--组合选取

作者: 岁月如歌2020 | 来源:发表于2020-04-21 17:39 被阅读0次
image.png

0. 链接

题目链接

1. 题目

Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

Example:

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

2. 思路1:回溯法

对于每个组合结果而言,每个元素可能出现在单个结果里,也可能不出现,所以需要逐个尝试。

按照回溯法的套路:

  • 选择
  • 深度迭代
  • 撤销选择

可以从1-n遍历每个数字的情况,原则是不回头选取, 这样可以避免重复结果.

3. 代码

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        combs = list()
        comb = list()
        self.collect(combs, comb, 1, n, k)
        return combs

    def collect(self, combs: List[List[int]], comb: List[int], start: int, n: int, k: int):
        if k == 0:
            combs.append(comb.copy())
        else:
            for i in range(start, n + 1):
                comb.append(i)
                self.collect(combs, comb, i + 1, n, k - 1)
                comb.pop()


def my_test(solution: Solution, n: int, k: int):
    print('n={}, k={} => {}'.format(n, k, solution.combine(n, k)))


solution = Solution()
my_test(solution, 4, 2)
my_test(solution, 5, 2)
my_test(solution, 2, 1)

输出结果

n=4, k=2 => [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
n=5, k=2 => [[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
n=2, k=1 => [[1], [2]]

4. 结果

image.png

相关文章

  • 算法题--组合选取

    0. 链接 题目链接 1. 题目 Given two integers n and k, return all p...

  • 递归算法之全排列与组合

    组合算法描述: 回溯: 用一个数组储存选取的每位数p[] 对于每位要选取的数,从1-n循环,然后检查该数是否...

  • 算法题总结day1

    今天开始从简单的开始总结一些简单的算法题。我按照leetcode interview的题从简单到困难排序,依次选取...

  • 搜索-组合

    刷题学习的第一类算法,由深度优先搜索DFS引申出的,排列组合算法。在一个给定长度n的数组中取出k个数,做组合或者排...

  • 算法简介

    机器学习的工作:前期的数据预处理,后期的参数选择归一化范围的选取,降维算法的选取,最佳参数选取的算法 线性回归 拟...

  • 40、组合总和 II | 算法(leetode,附思维导图 +

    零 标题 & 简介 1 标题 算法(leetode,附思维导图 + 全部解法)300题之(40)组合总和 II 2...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • Java算法题:电话号码组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注...

  • 笔试题—字符串常见的算法题集锦

    笔试题—字符串常见的算法题集锦 本篇博客主要讲解一下四个问题 KMP算法 字母倒序输出 全排列 全组合 转载请注明...

  • 组合数学与算法题-排列组合篇

    前言 之前刷过一些leetcode的题目,这学期修了组合数学这门课,让我感受颇多。课程上更关注的是数学上的解法,并...

网友评论

    本文标题:算法题--组合选取

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