当前位置: 首页 > news >正文

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

题目要求
在这里插入图片描述
思路
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.lryc.cn/news/344564.html

相关文章:

  • Unity数据持久化之XML
  • Leetcode 226:翻转二叉树
  • 柯里化与无参装饰器
  • Spring事务失效的场景
  • Python基础学习之datetime模块
  • 在AI大模型中全精度和半精度参数是什么意思?
  • 刷题记录2
  • 【配置】Docker搭建JSON在线解析网站
  • 2024.5.2 —— LeetCode 高频题复盘
  • ThreeJS:光线投射与3D场景交互
  • docker挂载数据卷-以nginx为例
  • Docker-compose部署Fastapi项目
  • Eigen求解线性方程组
  • 7、Java基本数据类型的使用细节探讨(超详细版本)
  • MFC实现点击列表头进行排序
  • 用龙梦迷你电脑福珑2.0做web服务器
  • 秋招后端开发面试题 - JVM类加载机制
  • OceanBase 分布式数据库【信创/国产化】- OceanBase 配置项和系统变量概述
  • 单单单单单の刁队列
  • 电脑windows系统压缩解压软件-Bandizip
  • 图片公式识别@文档公式识别@表格识别@在线和离线OCR工具
  • Java高阶私房菜:JVM分代收集算法介绍和各垃圾收集器原理分解
  • 为什么IB损失要在100epochs后再用?
  • 《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用
  • 【备战软考(嵌入式系统设计师)】10 - 软件工程基础
  • 随手笔记-GNN(朴素图神经网络)
  • C 语言指针怎么理解?
  • HTTP协议:通信机制、特点及实践应用
  • Leetcode—289. 生命游戏【中等】
  • 系统运维(虚拟化)