LeetCode讲解篇之90. 子集 II

文章目录

题目描述

题解思路

初始化一个变量start表示当前从哪里开始遍历nums

搜索过程的数字组合加入结果集

从start开始遍历nums

如果当前元素和前一个元素相等,前一个元素没被使用,则触发剪枝去重操作,跳过当次遍历

否则,将start赋值为当前元素的下一个,递归搜索,然后跳过重复的数字,进行剪枝

直到搜索完毕,返回结果集

题解代码

python 复制代码
class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        start = 0
        res = []
        tmp = []
        n = len(nums)
        def dfs():
            nonlocal start
            res.append([num for num in tmp])
            i = start
            while i < n:
                start = i + 1
                tmp.append(nums[i])
                dfs()
                tmp.pop()
                while i < n - 1 and nums[i] == nums[i+1]:
                    i+=1
                i+=1
        dfs()
        return res
相关推荐
饮水桶_T8 小时前
JAVA IO流笔记
开发语言·数据结构·算法
星夜离尘569 小时前
MATLAB 离散数据分箱:半开区间、末端点与计数、加权和、平均
算法·matlab
Pniubi9 小时前
力扣76.最小覆盖子串
算法·leetcode·职场和发展
鸿蒙开发爱好者10 小时前
下班后做的小工具和小游戏,我把它们整理成了 WyanHub
网络·人工智能·职场和发展·个人开发
地平线开发者10 小时前
征程6|用 hrt\_model\_exec 看清 YOLOv5x 的输入、原始输出和后处理
人工智能·算法
csdn_aspnet11 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
赤生云电竞11 小时前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
青少儿编程课堂12 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
Oneshot15 小时前
DLX(Dancing Links)算法详解:求解数独最快的算法
算法
文丑颜不良啊15 小时前
LeetCode2541~2560题目解析
java·leetcode