首页 > 其他分享 >leetCode.90. 子集 II

leetCode.90. 子集 II

时间:2024-06-02 15:01:27浏览次数:23  
标签:leetCode.90 nums int 元素 back II vector 子集 path

leetCode.90. 子集 II


题目思路
在这里插入图片描述


代码

class Solution {
public:
    vector<vector<int>> res;
    vector<int> path;

    vector<vector<int>> subsetsWithDup(vector<int>& nums) {
        // 先排序,让有相同元素的都放到一起
        sort(nums.begin(), nums.end());

        dfs(nums,0);

        return res;
    }

    void dfs(vector<int>& nums, int u) {
        if (u == nums.size()) {
            res.push_back(path);
            return;
        }

        int k = u + 1;
        // 判断重复元素出现的次数
        while (k < nums.size() && nums[u] == nums[k]) ++ k;

        // 从nus[u]开始,一直存放到相同元素出现的次数,共计存放 o ~ 当前所在位置所有元素的次数 + 相同元素的次数
        for (int i = 0; i <= k - u; ++ i) {
            dfs(nums, k); // 先这样,可以表示可以相同元素存0次
            path.push_back(nums[u]);
        }

        // 剪枝
        for (int i = 0; i <= k - u; ++ i) {
            path.pop_back();
        }
    }
};

标签:leetCode.90,nums,int,元素,back,II,vector,子集,path
From: https://blog.csdn.net/qq_48290779/article/details/139391670

相关文章

  • day45 1049.最后一块石头的重量II 494.目标和 474.一和零
    1049.最后一块石头的重量II本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。本题物品的重量为stones[i],物品的价值也为stones[i]。对应着01背包里的物品重量weight[i]和物品价值value[i]。思路:动规五部曲1.确定dp数组以及下......
  • day46 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ
    完全背包理论基础有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。01背包内嵌的循环是从大到小遍历,为了保证每个物品仅被添加一次。而完全......
  • day44 01背包问题 416. 分割等和子集
    背包问题01背包有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。暴力的解法每一件物品其实只有两个状态,取或者不取,所以可以使用回溯法搜索出所有的情况,那么......
  • 代码随想录算法训练营第第25天 | 216.组合总和III 、17.电话号码的字母组合
    今天的题比较简单,重点是在于剪枝216.组合总和III如果把组合问题理解了,本题就容易一些了。题目链接/文章讲解:https://programmercarl.com/0216.组合总和III.html视频讲解:https://www.bilibili.com/video/BV1wg411873x/***@param{number}k*@param{number}n*@retu......
  • (11.1)iic串口读写EEPROM实验:EEPROM介绍
    一、EEPROM简介EEPROM(ElectricallyErasableProgrammableReadOnlyMemory),带电可擦除可编程只读存储器,是一种掉电后数据不丢失的非易失性存储器,用户可以通过高于普通电压的作用来擦除和编程(重写)非易失性存储器主要包括:EEPROM:以字节为单位改写;结构复杂,成本高;存储......
  • 深入解析力扣170题:两数之和 III - 数据结构设计(哈希表与双指针法详解及模拟面试问答)
    在本篇文章中,我们将详细解读力扣第170题“两数之和III-数据结构设计”。通过学习本篇文章,读者将掌握如何设计一个数据结构来支持两种操作,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解,以便于理解。问题描述力扣第170题“两数之和III......
  • 代码随想录算法训练营第四十五天 | 1049. 最后一块石头的重量 II、494. 目标和、474.
    1049.最后一块石头的重量II视频讲解:动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili代码随想录解题思路直接将这一些石头,分为两堆,让他们尽可能相似,然后再相撞,就是最小值1.dp[j]背包容量为j所背的最大价值2.dp[......
  • C# 检测并重启windows服务,IIS应用池
      usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Linq;usingSystem.ServiceProcess;usingSystem.Text;usinglog4net;usingSystem.Timers;usingSystem.Configurati......
  • Leedcode-反转字符串 II
    自己写的:classSolution:defreverseStr(self,s:str,k:int)->str:#初始化两个空列表:s_li用于存储切分后的字符串片段,res用于存储处理后的片段s_li=[]res=[]#遍历字符串,步长为2*k,切分成每2*k个字符一组的片段并存储在s_li......
  • Windows Server系统中如何通过IIS创建Web站点
    概述本文主要介绍在WindowsServer系统中,如何通过IIS创建Web站点。详细信息根据您的操作系统版本,选择对应的操作步骤。由于WindowsServer2008和2012的步骤一致,此处以WindowsServer2012版本为例。提示:通过IIS创建站点前需要确认您的Windows实例已经安装IIS服务,如未安装IIS......