博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头做leetcode之leetcode 47 全排列II
阅读量:2434 次
发布时间:2019-05-10

本文共 1054 字,大约阅读时间需要 3 分钟。

47.全排列II

给定一个可包含重复数字的序列,返回所有不重复的全排列

  • 与46不同的是,这里有可能有重复数字导致重复排列,解决办法
  • 先排序,在DFS的时候加一个剪枝的条件:如果当前数组与前一个数字相等且前一个标志位为0(即未被使用,就意味着以这个数字开头的排列已经存在于结果数组,也就是回溯过了)
class Solution {
public: vector
> permuteUnique(vector
& nums) {
if(nums.size() == 0) return {
}; sort(nums.begin(),nums.end()); vector
> res; vector
tmp; vector
flag(nums.size(),0); DFS(res,tmp,flag,nums); return res; } void DFS(vector
> &res,vector
&tmp,vector
&flag,vector
nums){ if(tmp.size() == nums.size()){ res.push_back(tmp); } for(int i = 0;i < nums.size();i++){ if(flag[i] == 1 || (i>0 && flag[i-1] == 0 && nums[i] == nums[i-1])) continue; flag[i]=1; tmp.push_back(nums[i]); DFS(res,tmp,flag,nums); tmp.pop_back(); flag[i]=0;//不要忘了回溯的时候置回0 } }};

通过时间:

在这里插入图片描述

转载地址:http://bsemb.baihongyu.com/

你可能感兴趣的文章
malloc的小知识
查看>>
UVALive 6755 - Swyper Keyboard
查看>>
uva10023 手算开方的方法
查看>>
欧拉函数——从容斥定理和积性函数的性质谈开
查看>>
第一个JSP程序(JSP入门)
查看>>
JSP语法简介
查看>>
JSP中EL表达式入门与简介
查看>>
Spring的几种注入方式
查看>>
Spring自动装配
查看>>
Hibernate入门与实例
查看>>
Jython入门学习
查看>>
Hiberate基础用法实例
查看>>
Maven编译时指定JDK版本
查看>>
Hibernate单向关联N-1
查看>>
Hibernate单向关联1-1
查看>>
jQuery自定义动画
查看>>
Spring-data-redis在shiro中的实例
查看>>
GUN C中__attribute__作用
查看>>
3、系统调用之SYSCALL_DEFINE分析
查看>>
linux的signal_pending及signal
查看>>