leetcode77组合

leetcode77 Combinations

Posted by BY on April 16, 2019

前言

新的一年,好好学习。

正文

问题来源

本问题来自leetcode上的77题。

问题描述

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

示例:

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

分析:

回溯法,秒切

func combine(n int, k int) [][]int {
    tmpRes := make([]int, 0)
    res := make([][]int, 0)
    dfs(1, n, k, tmpRes, &res)
    return res
}

func dfs(start, end, k int, tmpRes []int, res *[][]int) {
    if 0 == k {
        temp := append([]int{}, tmpRes...)
        *res = append(*res, temp)
        return
    }
    for i := start; i <= end - k + 1; i++{
        tmpRes = append(tmpRes, i)
        dfs(i+1, end, k-1, tmpRes, res)
        tmpRes = tmpRes[:len(tmpRes)-1]
    }
}

总结:

勤思考。

结语

不管怎么样好好加油。