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
相关推荐
无敌最俊朗@9 分钟前
友元的作用与边界
算法
Miraitowa_cheems23 分钟前
LeetCode算法日记 - Day 104: 通配符匹配
linux·数据结构·算法·leetcode·深度优先·动态规划
程序员东岸40 分钟前
从零开始学二叉树(上):树的初识 —— 从文件系统到树的基本概念
数据结构·经验分享·笔记·学习·算法
甄心爱学习1 小时前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
爪哇部落算法小助手2 小时前
每日两题day44
算法
不穿格子的程序员3 小时前
从零开始写算法——二分-搜索二维矩阵
线性代数·算法·leetcode·矩阵·二分查找
程序员小远3 小时前
软件测试之bug分析定位技巧
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
Kuo-Teng4 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list
Kuo-Teng4 小时前
LeetCode 21: Merge Two Sorted Lists
java·算法·leetcode·链表·职场和发展
2301_800399724 小时前
stm32 printf重定向到USART
java·stm32·算法