leetcode90-子集II

embedded/2025/4/1 20:31:53/

leetcode 90
在这里插入图片描述

思路

之前有一篇博文和本题很相似,可以参考:leetcode78-子集
本题是子集II,和子集的区别就是本题中的元素可能是重复的,并且nums是无序的,对于这种类型的题,也和之前发布的一篇博文很相似:组合总和II
这里的难点在于去重,去重的逻辑和组合总和II完全相似,首先对于无序的nums,我们需要给他进行排序,否则无法知道是否是重复的,在排序完成后,我们可以通过下一个元素和上个元素进行比较,如果相同说明是重复的,但是需要注意的是,前一个元素和后一个元素相同的时候还不能是同一个层级的,这里的startIndex是开始遍历的初始节点,如果i > startIndex的时候说明开始节点不同,和前一个元素不属于同一个层级,什么时候可能是同一个层级呢? 假设nums = [1,2,2] startIndex = 0,就是从0开始的时候,会有多个深度遍历,path = [1], path = [1,2], path = [1,2,2]都是从1开始的,也就是这些path都是从startIndex = 0开始的,往深度去遍历,这种情况就是一个层级,path = [1,2,2]的时候第三个元素和第二个元素相同但是这是可以作为答案的,所以不能return,所以需要i > startIndex

实现

var subsetsWithDup = function (nums) {let result = [], path = [];nums.sort((a, b) => a - b);const backtracking = (nums, startIndex) => {result.push([...path])if (startIndex === nums.length) return;for (let i = startIndex; i < nums.length; i++) {if (i > startIndex && nums[i] === nums[i - 1]) {continue}path.push(nums[i])backtracking(nums, i + 1)path.pop()}}backtracking(nums, 0)return result;
};

http://www.ppmy.cn/embedded/177987.html

相关文章

未来村庄智慧灯杆:点亮乡村智慧生活​

在乡村振兴与数字乡村建设的时代进程中&#xff0c;未来村庄智慧灯杆凭借其多功能集成与智能化特性&#xff0c;已成为乡村基础设施建设领域的崭新焦点&#xff0c;为乡村生活带来了前所未有的便利&#xff0c;推动着乡村生活模式的深刻变革。​ 多功能集成&#xff1a;一杆多能…

用空闲时间做了一个小程序-文字转语音2.0(语音播放进度条)

一直在摸鱼中赚钱的大家好呀~ 上篇文章讲到了获取语音时长遇到的一些问题和楼主的解决方案&#xff0c;这篇文章就接着上文继续往下实现语音播放进度的解决方案。这篇文章会讲到播放进度条的实现&#xff0c;希望这篇文章可以给更多的鱼友们(没错就是你们)的解决一些开发中遇到…

【第23章】亿级电商订单系统架构-设计评审与验证

第1章亿级电商订单系统架构-设计评审与验证 1-1 本章导学 课程目标:掌握架构设计评审与验证的核心方法,并应用于电商平台订单系统实战 学习内容框架 一、架构设计评审模块 评审内容体系 架构完整性评估技术方案可行性分析性能与扩展性指标安全合规性审查评审方法论 专家走…

Imgui处理glfw的鼠标键盘的方法

在Imgui初始化时&#xff0c;会重新接手glfw的键盘鼠标事件。也就是遇到glfw的键盘鼠标事件时&#xff0c;imgui先会运行自己的处理过程&#xff0c;然后再去处理用户自己注册的glfw的键盘鼠标事件。 看imgui_impl_glfw.cpp源码的安装回调函数部分代码 void ImGui_ImplGlfw_In…

4.训练篇2-毕设篇

resnet # 1. 从 torchvision 中加载预训练的 ResNet18 模型 # pretrainedTrue 表示使用在 ImageNet 上预训练过的参数&#xff0c;学习效果更好 base_model_resnet18 models.resnet18(pretrainedTrue)# 2. 获取 ResNet18 模型中全连接层&#xff08;fc&#xff09;的输入特征…

在Trae中设置Python解释器版本

Python 是一种广泛使用的高级编程语言&#xff0c;因其简洁易读的语法和强大的功能而备受欢迎。随着 Python 的不断发展&#xff0c;多个版本相继发布&#xff0c;每个版本都带来了新特性和改进。然而&#xff0c;这也带来了一些问题&#xff0c;比如不同的工程&#xff0c;需要…

明天该穿哪件内衣出门?

用数学策略让「爱用品」活得更久 你有没有纠结过&#xff1a; ✔️ 最喜欢的T恤洗多了变薄&#xff0c;但总忍不住想穿它&#xff1f; ✔️ 新买的鞋子轮流穿&#xff0c;结果其中一双先磨坏了底&#xff1f; ✔️ 囤了5支口红&#xff0c;最后常用的只有那1支快过期的&#x…

elasticsearch8的部署手册

部署Elasticsearch 8的步骤如下&#xff1a; 1. 准备工作 确保你的服务器满足以下最低硬件和系统要求&#xff1a; CPU: 至少2个核心内存: 至少4GB存储: 至少50GB可用空间&#xff08;推荐使用SSD&#xff09;操作系统: 支持的Linux发行版&#xff0c;如CentOS、Ubuntu等。 …