当前位置: 首页 > news >正文

代码随想录Day20 | Leetcode77 组合

题目

给定两个整数 n 和 k,返回范围 [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

思路

学到了两种非常有用的思路

代码

class Solution:"""给定两个整数 n 和 k,返回范围 [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 <= 201 <= k <= n"""def combine1(self, n, k):result = []res = []def dfs(i):"""在[1,i]中获取d个数i < d:表示剩下的数量仍小于需要取的数量,可以不用递归,直接返回"""d = k - len(res) # 还需要取d个数# if i< d:return,该条件可换为如下的[d-1, i]if d == 0:result.append(res.copy())return# 从后往前,仅取从i往前的d个数,从前往后的返回条件是:n-i+1+len(res) < k -> n-i+1 < dfor j in range(i, d-1, -1):res.append(j)dfs(j-1)res.pop()dfs(n)return resultdef combine(self, n, k):result = []res = []def dfs(i):"""在[1,i]中获取d个数i < d:表示剩下的数量仍小于需要取的数量,可以不用递归,直接返回"""d = k - len(res) # 还需要取d个数# if i< d:returnif d == 0:result.append(res.copy())return# 不选i,超出d的部分先不选if i > d:dfs(i-1)# 选ires.append(i)dfs(i-1)res.pop()dfs(n)return resultif __name__ == '__main__':test = Solution()n = [4, 1]k = [2, 1]for i in range(len(n)):print(test.combine(n[i], k[i]))print(test.combine1(n[i], k[i]))

总结

时常感叹,别人为什么这么厉害

http://www.lryc.cn/news/308090.html

相关文章:

  • Android Duplicate class 排除重复类
  • 【Kubernetes】服务(Service)是什么?有什么用?有哪些类型?
  • 【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)
  • Redis高级特性详解:事务处理、发布订阅、持久化和集群
  • nwjs做自动化测试
  • 【前端素材】推荐优质在线特殊品牌商城电商网页eStore平台模板(附源码)
  • Redis之一: 简介及环境安装搭建
  • 关于电脑一天24小时多少度电电脑的一天用电量计算
  • Unity3D 物理引擎的基本配置详解
  • CSS:弹性盒子Flexible Box布局
  • java常用环境docker安装
  • Code-Audit(代码审计)习题记录6-7
  • go 的使用总结
  • 无线水电表智能化管理系统
  • 发掘效率黑科技:Allure报告助您事半功倍提升测试效能!
  • Spring Web 过滤器使用常见错误(上)
  • 【数据结构】周末作业
  • java 企业培训管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目
  • 在SAP HANA中使用OData(二)
  • 【Docker】前端基于dockerfiel构建镜像部署,实现在容器启动时传递环境变量, 请求不同服务地址
  • 评估测试接口软件与网站的使用方法及优劣势比较
  • 【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)
  • Spring Boot 和 Spring Cloud: 区别与联系
  • 9.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏连接服务器的操作
  • vue - - - - - vue3使用draggable拖拽组件
  • PHP语言常见面试题:请解释一下PHP是什么,以及它的主要用途是什么?
  • Unity(第六部)向量的理解和算法
  • TypeScript+React Web应用开发实战
  • android开发电子书,android基础编程
  • 2024-02-25 Unity 编辑器开发之编辑器拓展6 —— Event