技术标签: LeetCode
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
思路:
本题有两种解法,第一种是属于python的作弊方法,第二种是属于回溯法的。首先讲第一种方法:
方法一:
使用了python的内置函数:itertools.combinations()来求解,效率奇快。
代码如下:
import itertools
class Solution(object):
# 此种解法也属于作弊,使用了python的内置函数:itertools.combinations()
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
combine_list = [[]]
for index in range(len(nums)):
single_list = list(itertools.combinations(nums, index+1))
combine_list.extend(single_list)
return combine_list
if __name__ == "__main__":
nums = [1, 2, 3]
combine_list = Solution().subsets(nums)
print(combine_list)
执行效率在100%
方法二:
使用回溯法,关于回溯法我之前写了一篇文章,大家可以看看。
https://blog.csdn.net/weixin_36431280/article/details/84891567
看完之后应该就大体知道了回溯法的解题步骤,步骤如下:
class Solution(object):
# 本题亦可使用回溯法
def subsets(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
# 定义保存最终结果的集合
combine_list = [[]]
# 递归
def back(current_list=[], start=0):
for index in range(start, len(nums)):
current_list.append(nums[index])
combine_list.append(current_list[:])
back(current_list, index+1)
current_list.pop()
back()
return combine_list
if __name__ == "__main__":
nums = [1, 2, 3]
combine_list = Solution().subsets(nums)
print(combine_list)
执行效率在50%左右了。
文章浏览阅读204次。宏任务 和 微任务都是异步任务宏任务setTimeoutsetInterval微任务process.nextTick()promise.then() // 这个微任务一般放在nextTick队列后面如果异步队列里有nextTick队列的话这道题帮助我们了解各种任务执行的顺序console.log('1');setTimeout(function() { console.log('2'); process.nextTick(function() { _javascript中同步微任务,同步宏任务,异步微任务,异步宏任务的执行顺序,不用解释,
文章浏览阅读6.3k次。select FType, id, FProjectNo, FProjectManagers, FCreateDate, FProjectNumType, FPurposeProjectNum, FApplyUser, lastname, jobtId, jobtitlename, subcompanyid1, departmentid, Fchengben, esignNormalSum, DesignNormalAdd, DesignNormal, DesignWeekEnd, DesignH..._帆软查询按钮怎么实现查询
文章浏览阅读195次。目录CONTENTS第1章 LAMP构建11.1 介绍Web给你认识11.1.1 Web应用的优势31.1.2 Web开发标准41.1.3 认识脚本语言51.2 动态开发所需的Web构件51.2.1 客户端浏览器61.2.2 超文本标记语言(HTML)71.2.3 层叠样式表(CSS)81.2.4 客户端脚本编程语言JavaScript91.2.5 Web服务器101.2.6..._兄弟连 php学习资料
文章浏览阅读1.2k次。docker swarm 集群部署MySQL_docker swarm mysql集群
文章浏览阅读1.3k次。参考:https://www.cnblogs.com/wonker/p/10460035.html传统URL传递参数用?和&拼接:<a th:href="/deletePersonByid?id=${jjj.id}&name=${jjj.name}"></a>而thymeleaf是使用(,)的形式解析多个参数,结合${}放置变量:<button><a th:href="@{/deletePersonByid(id=${person.id})
文章浏览阅读2k次,点赞3次,收藏17次。作者:Jack Frost来源:CSDN原文:https://blog.csdn.net/zhi11235813/article/details/78801528一、概述ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。Cmos YUV sensor ..._decompand
文章浏览阅读156次。要将它们一起运行,可用的选项很少,但我选择了为Junit和TestNG使用不同的配置文件.但现在的问题是排除和包括测试用例.因为如果我们在maven中将testNG依赖项添加到主项目,它将跳过所有Junit,我已经决定将它放在单独的配置文件中.所以我在默认(主)配置文件中排除TestNG测试,使用pom.xml中的以下条目进行编译:org.apache.maven.pluginsmaven-com..._java maven junit testng
文章浏览阅读1.6k次。回顾近期遇到的了这样的问题,在使用 SpringBoot + SpringDataJpa 的时候,明明在方法上添加了 @Transactional 注解,但是在操作数据库的时候却没有启用事务,方法中所作的每一条 SQL 操作都直接提交了.而不是合并为同一个事务进行提交.下面对我遇到的问题做一下场景回顾.代码回顾首先对我代码做一下伪代码描述:@RestController@RequestMapping("/")public class MainController{ @Resource Mai_data jpa test不回滚
文章浏览阅读7.1k次,点赞8次,收藏51次。PJSIP是一个包含了SIP、SDP、RTP、RTCP、STUN、ICE等协议实现的开源库。它把基于信令协议SIP的多媒体框架和NAT穿透功能整合成高层次、抽象的多媒体通信API,这套API能够很容易的一直到各种构架中,不管是桌面计算机,还是嵌入式设备等PJSIP组织架构PJSIP开源库中主要包含两个模块,SIP协议栈(SIP消息处理)和媒体流处理模块(RTP包的处理)。静态库布..._pjsip
文章浏览阅读838次,点赞2次,收藏17次。学生信息管理系统一、前期工作①下载eclipse、mysql、navicat②建立navicat与mysql的连接二、明确项目的具体实现思路★系统功能分析本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:① 学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。② 学生流动情况的输入,包括:转系、休学、复学、退学、毕业。③ 奖惩情况的输入。④ 学生个人情况查询和修改,包括流动情况和奖罚情况。★项目功能模块设计★数据流程图★数_eclipse swing mysql学生管理系统
文章浏览阅读2w次,点赞5次,收藏47次。1.查看当前java进程的pid pgrep -lf java2.查看java堆的详细信息 jmap -heap PID
文章浏览阅读1.3w次。这是我在写 跳棋时候遇到的,问题当时 我要传递的是一个数组,在窗口之间传递数组. 关于信号槽 机制请点这里. 注意:信号和槽机制在QObject中就实现了,可以实现在任意从QObject中继承的子类中。 我要演示的是一个 窗口之间传递 数据的信号槽实现,这只是跳棋代码中的一部分 关键代码 主函数如下: int main(int argc, char *argv[]){ Q_INIT_RESOURCE(pic); QApplication a(argc, argv); MainWindow _qt信号传递数组