LeetCode78-子集_leetcode78 javascript-程序员宅基地

技术标签: 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%左右了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36431280/article/details/88086945

智能推荐

js同步任务,异步任务,宏任务 和 微任务 的执行顺序_javascript中同步微任务,同步宏任务,异步微任务,异步宏任务的执行顺序,不用解释,-程序员宅基地

文章浏览阅读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..._帆软查询按钮怎么实现查询

当当网 跟兄弟连学php_跟兄弟连学PHP(精要版)-程序员宅基地

文章浏览阅读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学习资料

docker swarm集群部署MySQL_docker swarm mysql集群-程序员宅基地

文章浏览阅读1.2k次。docker swarm 集群部署MySQL_docker swarm mysql集群

thymeleaf url传递多个参数-程序员宅基地

文章浏览阅读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})

ISP流程概述(转载)_decompand-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏17次。作者:Jack Frost来源:CSDN原文:https://blog.csdn.net/zhi11235813/article/details/78801528一、概述ISP(Image Signal Processor), 即图像信号处理, 主要作用是对前端图像传感器输出的信号做后期处理, 依赖于 ISP 才能在不同的光学条件下都能较好的还原现场细节。Cmos YUV sensor ..._decompand

随便推点

java testng 项目_java – Junit4和TestNG在Maven的一个项目中-程序员宅基地

文章浏览阅读156次。要将它们一起运行,可用的选项很少,但我选择了为Junit和TestNG使用不同的配置文件.但现在的问题是排除和包括测试用例.因为如果我们在maven中将testNG依赖项添加到主项目,它将跳过所有Junit,我已经决定将它放在单独的配置文件中.所以我在默认(主)配置文件中排除TestNG测试,使用pom.xml中的以下条目进行编译:org.apache.maven.pluginsmaven-com..._java maven junit testng

SpringBoot 使用 SpringDataJpa 报错事务回滚失效原因排查_data jpa test不回滚-程序员宅基地

文章浏览阅读1.6k次。回顾近期遇到的了这样的问题,在使用 SpringBoot + SpringDataJpa 的时候,明明在方法上添加了 @Transactional 注解,但是在操作数据库的时候却没有启用事务,方法中所作的每一条 SQL 操作都直接提交了.而不是合并为同一个事务进行提交.下面对我遇到的问题做一下场景回顾.代码回顾首先对我代码做一下伪代码描述:@RestController@RequestMapping("/")public class MainController{ @Resource Mai_data jpa test不回滚

【整理】PJSIP开源库详解-程序员宅基地

文章浏览阅读7.1k次,点赞8次,收藏51次。PJSIP是一个包含了SIP、SDP、RTP、RTCP、STUN、ICE等协议实现的开源库。它把基于信令协议SIP的多媒体框架和NAT穿透功能整合成高层次、抽象的多媒体通信API,这套API能够很容易的一直到各种构架中,不管是桌面计算机,还是嵌入式设备等PJSIP组织架构PJSIP开源库中主要包含两个模块,SIP协议栈(SIP消息处理)和媒体流处理模块(RTP包的处理)。静态库布..._pjsip

基于Java Swing+mysql的学生信息管理系统_eclipse swing mysql学生管理系统-程序员宅基地

文章浏览阅读838次,点赞2次,收藏17次。学生信息管理系统一、前期工作①下载eclipse、mysql、navicat②建立navicat与mysql的连接二、明确项目的具体实现思路★系统功能分析本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统的主要功能有:① 学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。② 学生流动情况的输入,包括:转系、休学、复学、退学、毕业。③ 奖惩情况的输入。④ 学生个人情况查询和修改,包括流动情况和奖罚情况。★项目功能模块设计★数据流程图★数_eclipse swing mysql学生管理系统

JVM小知识:linux 命令查看jvm堆内存信息-程序员宅基地

文章浏览阅读2w次,点赞5次,收藏47次。1.查看当前java进程的pid pgrep -lf java2.查看java堆的详细信息 jmap -heap PID

关于 qt 信号与槽 数组传递_qt信号传递数组-程序员宅基地

文章浏览阅读1.3w次。这是我在写 跳棋时候遇到的,问题当时 我要传递的是一个数组,在窗口之间传递数组. 关于信号槽 机制请点这里. 注意:信号和槽机制在QObject中就实现了,可以实现在任意从QObject中继承的子类中。 我要演示的是一个 窗口之间传递 数据的信号槽实现,这只是跳棋代码中的一部分 关键代码 主函数如下: int main(int argc, char *argv[]){ Q_INIT_RESOURCE(pic); QApplication a(argc, argv); MainWindow _qt信号传递数组

推荐文章

热门文章

相关标签