长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编程语言

  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
    • Leetcode-46-全排列
    • Leetcode-78-子集
      • 题目说明
      • 题解
        • 回溯法
        • DFS
    • Leetcode-90-子集 II
  • 计算机组成原理

  • 操作系统

  • 计算机网络

  • 数据库

  • 设计模式

  • 基础
  • 数据结构和算法
DC Wang
2022-11-22
目录

Leetcode-78-子集

# Leetcode-78-子集

# 题目说明

给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。

解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

示例 1:

输入:nums = [1,2,3]
输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
1
2

示例 2:

输入:nums = [0]
输出:[[],[0]]
1
2

提示:

  • 1 <= nums.length <= 10
  • -10 <= nums[i] <= 10
  • nums 中的所有元素 互不相同

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/subsets

# 题解

# 回溯法

def backtracking(nums, result, length, index, subset):
    if length == len(subset):
        result.append(subset.copy())
        return
    for i in range(index, len(nums)):
        subset.append(nums[i])
        backtracking(nums, result, length, i+1, subset)
        subset.pop()


def fun(nums):
    result = []
    result.append([])
    for i in range(1, len(nums) + 1):
        backtracking(nums, result, i, 0, [])
    return result

print(fun([1,2,3]))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

执行结果:

[[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
1

# DFS

def dfs(nums, result, index, subset):
    result.append(subset.copy())
    for i in range(index, len(nums)):
        subset.append(nums[i])
        dfs(nums, result, i+1, subset)
        subset.pop()

def fun(nums):
    result = []
    dfs(nums, result, 0, [])
    return result

print(fun([1,2,3]))
1
2
3
4
5
6
7
8
9
10
11
12
13

执行结果:

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
1
编辑 (opens new window)
#回溯法#DFS
上次更新: 2023/02/16, 22:15:06
Leetcode-46-全排列
Leetcode-90-子集 II

← Leetcode-46-全排列 Leetcode-90-子集 II→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式