[leetcode]77_组合_给定数字范围且输出无重复

server/2024/9/29 22:10:35/
给定两个整数 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

解题思路:【回溯】

回溯三部曲:1、确认递归函数返回值与参数:n,k,结果数组res,子集合path,子集合首元素起始位置startindex。2、回溯函数终止条件:找到长度为k的子集合。3、单层搜索过程:循环遍历[startindex, n + 1 - (k - len(path)) + 1]的每个元素i——包含剪枝操作:从startindex开始,确保可以满足子集合还需要的元素数目k - len(path);不满足,则结束循环遍历(不进行遍历)。path.append(i),再递归遍历子集合下一元素startindex + 1;若子集合的遍历终止,则回溯path.pop(),遍历下一个元素i + 1。

class Solution:def combination(self, n, k, startindex, res, path=[]):length = len(path)if length == k:#   此处必须采用这种形式,表示将path中的元素添加到res中;#   若采用res.append(path),表示将path引用添加到res中res.append(path[:])#   回溯,寻找下一组return#   循环遍历元素,并剪枝for i in range(startindex, n + 1 - (k - length) + 1):path.append(i)self.combination(n, k, i + 1, res, path)#   回溯path.pop()if __name__ == '__main__':try:n, k = map(int, input().split())res = []solution = Solution()solution.combination(n, k, 1, res)print(res)except Exception as e:print(e)

仅作为代码记录,方便自学自查自纠


http://www.ppmy.cn/server/124675.html

相关文章

20240926 关于Goland处理wsl-GOROOT原理猜测

GOROOT的原理 go sdk与java jdk类似&#xff0c;是go的编译工具链的集合。 在windows上&#xff0c;我们通过在系统环境变量中添加GOROOT并设置为go sdk地址&#xff0c;使得命令行可以访问到go sdk并执行go test、build等命令&#xff0c;这样设置的变量是全局生效的&#x…

JAVA实体需要加@Builder吗(构建器模式)

对于JAVA中两种设置属性值的方式有什么区别&#xff0c;这里做下记录 问题一&#xff1a;JAVA实体什么时候需要加Builder&#xff1f; 在Java中&#xff0c;Builder 注解通常用于简化创建对象时构造函数的调用。当你有一个实体类&#xff08;Entity&#xff09;或数据传输对象&…

Spring是什么

Spring是一个轻量级的开源的J2EE框架。它是一个容器框架&#xff0c;用来装javabean(java对象)&#xff0c;中间层框架(万能胶)可以起一个连接作用&#xff0c;比如说把Struts和Hibernate粘合在一起运用&#xff0c;可以让我们的企业开发更快、更简活。 Spring是一个轻量级的控…

c# 子类继承父类接口问题

在C#中&#xff0c;子类并不直接“继承”父类继承的接口&#xff0c;但子类的确会继承父类对接口的实现&#xff08;如果父类实现了该接口&#xff09;。这里有一些关键的概念需要澄清&#xff1a; 接口继承&#xff1a;当一个类实现了某个接口时&#xff0c;它必须实现接口中…

828华为云征文 | 使用Flexus X实例搭建Dubbo-Admin服务

一、Flexus X实例简介 华为云推出的Flexus云服务&#xff0c;作为专为中小企业及开发者设计的新一代云服务产品&#xff0c;以其开箱即用、体验卓越及高性价比而著称。其中的Flexus云服务器X实例&#xff0c;更是针对柔性算力需求量身打造&#xff0c;能够智能适应业务负载变化…

基于SpringBoot校园失物招领系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 本课题的作用、意义&#xff0c;在国内外的研究现状和发展趋势&#xff0c;尚待研究的问题 作用&#xff1a;本课题的目的是使失物招领信息管理清晰化&#xff0c;透明化&#xff0c;便于操作&#xff0c;易于管理。通过功能模…

探索 Midjourney 中文版:开启人工智能绘画新征程

Midjourney 中文版是专门为中国创作者精心打造的人工智能绘画神器。它打破了语言的壁垒&#xff0c;以熟悉的中文界面和指令输入方式&#xff0c;让每一个怀揣创意梦想的人都能轻松驾驭。无需再为复杂的英文指令而苦恼&#xff0c;在这里&#xff0c;你只需用中文表达心中的想象…

docker build 有时候不展示命令的输出情况,怎么办?

来源&#xff1a;https://stackoverflow.com/questions/64804749/why-is-docker-build-not-showing-any-output-from-commands docker build 有时候不展示命令的输出情况&#xff0c;不方便我们 debug&#xff0c;怎么办&#xff1f; 可以加上 docker build --progressplain …