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

回溯 Leetcode 47 全排列II

全排列II

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

Leetcode 47

学习记录自代码随想录

示例 1:
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]

示例 2:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

提示:
1 <= nums.length <= 8
-10 <= nums[i] <= 10

要点:1.需要两层去重,既要树层去重也要在同一树枝去重;
2.可以只使用used进行树层去重或者单独使用used进行树枝去重,而uset进行树层去重;
3.组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果。
4.树层去重相比于树枝去重较高;
在这里插入图片描述
在这里插入图片描述

class Solution {
private:vector<int> path;vector<vector<int>> result;void backtracking(vector<int>& nums, vector<int> used){if(path.size() == nums.size()){result.push_back(path);return;}unordered_set<int> uset;for(int i = 0; i < nums.size(); i++){// if(used[i] == 1 || (i > 0 && used[i-1] == 0 && nums[i] == nums[i-1])){//     continue;// }if(used[i] == 1 || uset.find(nums[i]) != uset.end()){continue;}uset.insert(nums[i]);used[i] = 1;path.push_back(nums[i]);backtracking(nums, used);path.pop_back();used[i] = 0;}}
public:vector<vector<int>> permuteUnique(vector<int>& nums) {path.clear();result.clear();// sort(nums.begin(), nums.end());  // 树层去重 要排序vector<int> used(nums.size(), 0);backtracking(nums, used);return result;}
};

相关文章:

  • SpringBoot接收参数的几种形式
  • docker (十二)-私有仓库
  • go垃圾回收
  • c++入门(2)
  • 代码随想录算法训练营第四十七天|198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III。
  • VR虚拟现实技术应用到猪抗原体检测的好处
  • 蓝桥杯第十四届电子类单片机组决赛程序设计
  • MySql安全加固:可信IP地址访问控制 设置密码复杂度
  • 蓝桥杯 信号覆盖
  • 安装 git 与查看 version
  • LeetCode #104 二叉树的最大深度
  • 5G网络频谱划分与应用
  • C# 找出两个Rectangle或是矩形的相互重合与非重合部分?
  • 【C语言】常见的动态内存管理错误
  • AI Agent
  • ComponentOne 2017 V2版本正式发布
  • CSS实用技巧
  • ES6--对象的扩展
  • Java到底能干嘛?
  • leetcode386. Lexicographical Numbers
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • nginx 配置多 域名 + 多 https
  • PV统计优化设计
  • Python - 闭包Closure
  • tensorflow学习笔记3——MNIST应用篇
  • ucore操作系统实验笔记 - 重新理解中断
  • v-if和v-for连用出现的问题
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 高度不固定时垂直居中
  • 关于 Cirru Editor 存储格式
  • 每天一个设计模式之命令模式
  • 批量截取pdf文件
  • 驱动程序原理
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 源码安装memcached和php memcache扩展
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 数据可视化之下发图实践
  • ​2020 年大前端技术趋势解读
  • #FPGA(基础知识)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $refs 、$nextTic、动态组件、name的使用
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (javascript)再说document.body.scrollTop的使用问题
  • (MATLAB)第五章-矩阵运算
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)详解PHP处理密码的几种方式
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • **PHP分步表单提交思路(分页表单提交)