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

力扣刷题Day 61:子集(78)

1.题目描述

2.思路

方法1:直接用Python内置函数itertools.combinations()。

方法2:回溯,参考了powcai佬的题解,nums = [1, 2, 3]的情况分析见下图。

方法3: 迭代,参考了powcai佬的题解 ,依次将新的元素添加到前面的结果列表里。

3.代码(Python3)

方法1:

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res = [[]]for i in range(0, len(nums)):res.extend(itertools.combinations(nums, i + 1))return res

方法2:

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:def helper(i, tmp):res.append(tmp)for j in range(i, len(nums)):helper(j + 1, tmp + [nums[j]])res = []helper(0, [])return res

方法3:

class Solution:def subsets(self, nums: List[int]) -> List[List[int]]:res = [[]]for num in nums:res += [[num] + res_i for res_i in res]return res

4.执行情况

方法1:

方法2:

方法3:

5.感想

终于搞清楚递归和回溯到底有什么区别了。我好难自己写出递归算法,脑子像糨糊一样想不清楚。

相关文章:

  • 算法分析·回溯法
  • Java高频面试之并发编程-23
  • 使用u盘重装银河麒麟操作系统
  • OC—UI学习-1
  • 在 Ubuntu 22.04 LTS 上离线安装 Docker
  • Gerapy二次开发:在Ubuntu服务器中利用pyenv+supervisor实现项目部署
  • zabbix6.x 监控mysql数据库
  • 力扣经典算法篇-16-最长公共前缀(顺序查找法,二分查找法,分治算法)
  • 深度学习入门:从零搭建你的第一个神经网络
  • React---day3
  • LNMP 架构部署
  • Django 中的路由系统
  • 实例与选项对象
  • 电子电路:电路设计都需要哪些公式?【电子电路设计常用公式总结】
  • 8.7 基于EAP-AKA的订阅转移
  • 性能诊断工具AWR配置策略与报告内容解析
  • 基于stm32LORA无线抄表系统仿真
  • 签约!京东云与契约锁达成战略合作,携手共推全程数智化解决方案
  • 用 Python 构建跨平台前端界面:深入解读 Flet 库
  • 进程的控制和调度上
  • 平度疫情最新数据消息/东莞seo建站哪家好
  • 做网站要注册公司么/百度高级搜索引擎入口
  • 重庆做网站制作的公司/厦门seo顾问
  • iapp网站做软件教程/企业培训师资格证报考2022
  • 免费psd素材网站/网站注册地址
  • 手机网站制作哪家便宜/百度seo排名优化软件化