LeetCode 47. 全排列 II(Permutations II)
题目描述
给定一个可包含重复数字的序列,返回所有不重复的全排列。
示例:
输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
解题思路
类似于LeetCode46.全排列,只不过对于每个起始位置维护一个之前遍历过的数集,在交换时判断当前数是否在数集中出现,若出现过则不能交换此数,否则与起始位置交换并将此数加入到数集中。
代码
 class Solution {
 public:
     vector<vector<int>> permuteUnique(vector<int>& nums) {
         vector<vector<int>> res;
         pmt(nums, , res);
         return res;
     }
     void pmt(vector<int> &seq, int idx, vector<vector<int>> &res){
         if(idx == seq.size() - )
             res.push_back(seq);
         else{
             vector<int> pre;
             for(int i = idx; i < seq.size(); i++){
                 vector<int>::iterator iter = find(pre.begin(), pre.end(), seq[i]);
                 if(iter != pre.end()) continue;
                 swap(seq[idx], seq[i]);
                 pmt(seq, idx + , res);
                 swap(seq[i], seq[idx]);
                 pre.push_back(seq[i]);
             }
         }
     }
 };
LeetCode 47. 全排列 II(Permutations II)的更多相关文章
- [LeetCode] 47. 全排列 II
		题目链接 : https://leetcode-cn.com/problems/permutations-ii/ 题目描述: 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [ ... 
- Java实现 LeetCode 47  全排列 II(二)
		47. 全排列 II 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] class Solut ... 
- LeetCode 47——全排列 II
		1. 题目 2. 解答 在 LeetCode 46--全排列 中我们已经知道,全排列其实就是先确定某一个位置的元素,然后余下就是一个子问题.在那个问题中,数据没有重复,所以数据中的任意元素都可以放在最 ... 
- LeetCode 47 全排列II
		题目: 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 解题思路: 与上一题相比,这题多了一 ... 
- [Swift]LeetCode47. 全排列 II | Permutations II
		Given a collection of numbers that might contain duplicates, return all possible unique permutations ... 
- 刷题——有重复元素的全排列(Permutations II)
		题目如上所示. 我的解决方法(参考了九章的答案!): class Solution { public: /* * @param : A list of integers * @return: A li ... 
- LeetCode 46. 全排列(Permutations)
		题目描述 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [ ... 
- 每日一题-——LeetCode(46)全排列
		题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列.输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ... 
- Leetcode之回溯法专题-47. 全排列 II(Permutations II)
		Leetcode之回溯法专题-47. 全排列 II(Permutations II) 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2] ... 
随机推荐
- DIj
			using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace DefineG ... 
- 给Repater增加等号
			//不改变数据结构的情况下,增加行号.对Application服务器压力增大,减少DB服务器压力. protected void repShow_ItemDataBound(object sen ... 
- Git复习(八)之快速理解Git结构
			git pull:拉取远程服务器最新代码到本地(会自动merge) git add:将本地代码添加到暂存区 git commit:将暂存区的所有内容提交到当前分支(git会自动为我们创建第一个分支 ... 
- react 不同环境配置不同域名
			npm eject 先将配置文件暴露出来 将scripts中的build文件复制一份,改名为你需要的名字 将其中的 process.env.NODE_ENV 赋值为你需要的环境 在package.js ... 
- dubbo学习笔记一(服务注册)
			相关的资料 官方文档 官方博客 项目结构 项目说明 [lesson1-config-api] 是一个接口工程,编译后是jar包,被其他工程依赖 [lesson1-config-2-properties ... 
- 深入简出mysql--第一部分
			第二章: 1.sql分类 DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段.数据库.表.列.索引等数据库对象的定义. 常用的语句关键字主要包括 ... 
- Hyperledger Fabric(4)链码ChainCode
			智能合约,是一个抽象的概念,智能合约的历史可以追溯到 1990s 年代.它是由尼克萨博(Nick Szabo)提出的理念,几乎与互联网同龄. 我们这里所说的智能合约只狭义的指区块链中.它能够部署和运行 ... 
- 使用Mybatis Generator自动生成代码
			MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码.它将内省数据库 ... 
- traceback:让你更加灵活地处理python的异常
			异常 异常在python中是屡见不鲜了,程序在执行到某一行代码时,发现有问题,比如数组索引越界,变量没有定义啊等等,此时就会抛出异常 捕获异常 在python,一般都是使用try···except来对 ... 
- linux pip使用国内源
			最近在Linux里面使用pip安装应用的速度十分的慢,于是便上网找了一些国内的源. 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:https:// ... 
