给定一个可能包含重复数字的集合,返回所有可能的不同全排列。
例如,
[1,1,2] 有以下不同全排列:
[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]

详见:https://leetcode.com/problems/permutations-ii/description/

Java实现:

class Solution {public List<List<Integer>> permuteUnique(int[] nums) {List<List<Integer>> res = new ArrayList<List<Integer>>();int size = nums.length;if(size==0||nums==null){return res;}boolean[] used = new boolean[size];List<Integer> out = new ArrayList<Integer>();Arrays.sort(nums);dfs(nums, used, out,res);return res;}public void dfs(int[] nums, boolean[] used, List<Integer> out,List<List<Integer>> res) {if(out.size()==nums.length) {res.add(new ArrayList<Integer>(out));return ;}for (int i=0; i<nums.length; i++) {// 当前位置的数已经在List中了if(used[i]){continue;}// 当前元素与其前一个元素值相同 且 前元素未被加到list中,跳过该元素if(i>0 && nums[i]==nums[i-1] && !used[i-1]){continue;}// 深度优先搜索遍历used[i]=true;out.add(nums[i]);dfs(nums, used, out, res);out.remove(out.size()-1);used[i]=false;}}
}

参考:https://blog.csdn.net/jacky_chenjp/article/details/66477538

转载于:https://www.cnblogs.com/xidian2014/p/8691406.html

047 Permutations II 有重复数字的全排列相关推荐

  1. LeetCode Permutations II(有重复元素的全排列)

    问题:给出一个有重复元素的数组,要求输出全排列 思路:先排序,然后使用next_permutation 具体代码参考: https://github.com/wuli2496/OJ/tree/mast ...

  2. 回溯专题——leetcode47. Permutations II medium(有重复数字的全排列)

    1.题目描述 Given a collection of numbers, nums, that might contain duplicates, return all possible uniqu ...

  3. E. Tyler and Strings(组合计数 + 树状数组/线段树)(带重复元素的全排列)

    题目链接 主要思路还是比较好想的,一些细节公式预处理比较难搞- 参考题解 分析 从前往后遍历,如果s[]剩下的数中,s[i] < t[i]则对答案是有贡献的: 贡献就是后面位置[i+1 ~ n] ...

  4. 【数字全排列】LeetCode 47. Permutations II

    LeetCode 47. Permutations II Solution1:我的答案 笨蛋方法:和第46题的思路差不多,把vector换成了set就OK啦~~~ class Solution { p ...

  5. [LeetCode] Permutations II 全排列之二

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  6. 全排列算法(无重复数字全排列/有重复数字全排列)/ 组合算法/ 求子集算法

    写在前面 全排列 1 无重复数字全排列 1.1 紫书版本 1.2 回溯法 2 有重复数字全排列 复盘易错点(可跳过) 写在前面 很久很久以前就想写的一篇博客,因为懒一直没开工,但是学习全排列算法算是我 ...

  7. lintcode :Remove Duplicates from Sorted Array II 删除排序数组中的重复数字 II

    题目: 删除排序数组中的重复数字 II 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A ...

  8. 包含重复数字序列的全排列Python解法

    给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列. 列: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] class S ...

  9. leetcode — 46. 全排列(不含重复数字)

    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 .你可以 按任意顺序 返回答案. 示例 1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3 ...

最新文章

  1. JSP基本语法:文件结构、脚本元素、指令元素、动作元素
  2. Wargame.kr_Web:already got
  3. 微服务监控zipkin、skywalking以及日志ELK监控系列
  4. mybatisPlus的分页查询
  5. 让XCode的Stack Trace信息可读
  6. shell与export命令
  7. spring事务传播,隔离级别,
  8. idea 配置maven一直停留在loading archetype list
  9. Drupal 紧急修复已遭利用的严重 0day
  10. 【转】larbin的设计原理
  11. 人群与网络:关系的平衡
  12. bzoj 3561: DZY Loves Math VI
  13. 数论和有限域的基本概念
  14. 操作系统原理第五章(资源分配与调度)
  15. round()函数的用法
  16. 2019/4/2更新 重制3617-6.17 增加918+6.21 二合一引导启动系统盘
  17. 数据治理的时代演变之道:大数据分析与机器学习落地应用的未来
  18. 如何使用Proteus进行电路设计仿真?
  19. Linux下安装pymysql步骤
  20. 用UltraIso便捷版制作万能隐藏启动U盘

热门文章

  1. python生成倒计时图片_python pygame--倒计时
  2. Python源码深度解析—Python提供的C API
  3. OpenGL基础21:材质
  4. OpenGL基础10:变换
  5. bzoj 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
  6. bzoj 3444: 最后的晚餐
  7. NYOJ 3:多边形重心问题
  8. 查看S/N提示'wmic' 不是内部或外部命令,也不是可运行的程序 或批处理文件。的解决办法(不添加环境变量版
  9. java 数组减除值_java – 删除数组中空值的最有效方法是什么.
  10. c++中获取蓝图组件_Vue组件通信方式居然有这么多?你了解几种