leetcode-有重复数字的全排列-98

ops/2025/2/6 21:06:25/

题目要求
在这里插入图片描述
思路
1.同【没有重复项的全排列-97】这个题一样,都是递归的题,区别在于这个可能会包含重复的数字,因此,不能只是简单的通过两个值是否相等然后用标志位标记,而是新增了一个数组,这个数组专门用于存储该元素是否被使用。
2.需要特殊处理的是,类似【1,2,1】的这种的结果可能会有两个,这是因为两个1的下标不同,这时我们可以对最初的元素进行排序,如果某个元素是重复元素,并且之前已经使用过,就跳过该元素。

if(i > 0 && num[i-1] == num[i] && !vis[i-1])continue;

代码实现

class Solution {
public:vector<vector<int>> res;vector<vector<int> > permuteUnique(vector<int>& num) {sort(num.begin(), num.end());//标记vector<int> vis(num.size(), 0);vector<int> n;per(num, n, vis);return res;}void per(vector<int>& num, vector<int>& n, vector<int>& vis){if(num.size() == n.size()){res.push_back(n);return;}for(int i = 0; i < num.size(); i++){if(vis[i])continue;if(i > 0 && num[i-1] == num[i] && !vis[i-1])continue;vis[i] = 1;n.push_back(num[i]);per(num, n, vis);vis[i] = 0;n.pop_back();}}
};

http://www.ppmy.cn/ops/38726.html

相关文章

ssm105基于JAVAEE技术校园车辆管理系统+jsp

校园车辆管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

【MySQL 数据宝典】【索引原理】- 007 索引优化示例

一、单表优化 1.1 数据准备 下面是一张用户通讯表的表结构信息,这张表来源于真实企业的实际项目中,有接近500万条数据. CREATE TABLE user_contacts (id INT(11) NOT NULL AUTO_INCREMENT,user_id INT(11) DEFAULT NULL COMMENT 用户标识,mobile VARCHAR(50) DEFAULT NULL C…

idea已配置的git仓库地址 更换新的Git仓库地址 教程

文章目录 目录 文章目录 更改流程 小结 概要更改流程技术细节小结 概要 先在idea控制台走一下流程 先将本地的git仓库删除 1. 查看当前远程仓库地址&#xff1a; 在终端或命令行中&#xff0c;导航到你的项目目录&#xff0c;并运行以下命令查看当前的远程仓库地址&#xff…

【图像超分】论文精读:Deep Convolution Networks for Compression Artifacts Reduction(ARCNN)

第一次来请先看这篇文章:【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等) 文章目录 前言Abstract1. IntroductionII. RELATED WORKIII. …

【Unity动画系统】动画层级(Animation Layer)讲解与使用

如何使用Unity的Animation Layer和Avater Mask把多个动画组合使用 想让玩家持枪行走&#xff0c;但是手里只有行走和持枪站立的动作。 Unity中最方便的解决办法就是使用动画层级animation layer以及替身蒙版avatar mask。 创建一个动画层级 Weight表示权重&#xff0c;0的话则…

Rust - 终端输入、文件读写

文章目录 查看参数接收终端输入读取文件写入文件 查看参数 fn main() { let args std::env::args();println!("{:?}", args); // Args { inner: ["target/debug/rt"] }for arg in args {println!("{}", arg);} }接收终端输入 use std::io:…

【Android】EventBus收不到消息的一种情况

前言 在使用Eventbus的时候&#xff0c;接收不到Eventbus传来的信息。 原因 在Activity里面得 onStart 里面注册Eventbus&#xff0c;但是接受不到传来的Post信息&#xff0c;因为在使用 Post 发送的时候&#xff0c;使用的是 EventBus.getDefault().post(event);但是此时发…

STM32 PWM 计数器模式和对齐

STM32 PWM 计数器模式和对齐 1. TIM高级定时器简介2. PWM计数模式2.1 向上计数2.2 向下计数2.3 中心对齐模式&#xff08;向上/向下计数&#xff09;2.4 重复计数 3 中心对齐模式1&#xff0c;2&#xff0c;34. FOC中PWM相关设置说明4.1 Update Event 触发ADC采集4.2 Output Ch…