「leetCode」77-组合⚡️

174 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

大家好,我是速冻鱼🐟,一条水系前端💦,喜欢花里胡哨💐,持续沙雕🌲,是隔壁寒草🌿的好兄弟,刚开始写文章。 如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~

题目🦀

77. 组合

难度中等

给定两个整数 nk,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

示例 1:

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

示例 2:

输入:n = 1, k = 1
输出:[[1]]

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

解题思路🌵

  • 有出路、有死路。
  • 考虑使用回溯算法。

解题步骤🌟

  • 经典回溯套路
//初始化result path
const result = []
const path = []
// [1,2,3,4]
//循环
push
backtrac()
pop
//return
  • 先初始化result path数组
  • 开始遍历然后递归
  • 当path.length===k时剪枝

源码🔥

/**
 * @param {number} n
 * @param {number} k
 * @return {number[][]}
 */
var combine = function(n, k) {
const result = []
const path = []
// [1,2,3,4]
function backtrack(start,n,path){
    if(path.length===k){
        result.push([...path])
        return
    }
    for(let i=start;i<=n;i++){
        path.push(i)
        backtrack(i+1,n,[...path])
        path.pop(i)
    }
    return
}
backtrack(1,n,path)
return result
};

时间复杂度:O(N^2)

空间复杂度:O(N)

结束语🌞

那么鱼鱼的LeetCode算法篇的「leetCode」77-组合⚡️就结束了,虽然前端对算法要求没有后端高,但是算法是编程基础,程序=数据结构➕算法,所以算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾,欢迎加我好友,一起沙雕,一起进步

github🤖:sudongyu

个人博客👨‍💻:速冻鱼blog

vx👦:sudongyuer

写在最后

伙伴们,如果喜欢我的口水话给🐟🐟点一个赞👍或者关注➕都是对我最大的支持。