47.全排列II

题目描述

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

示例1:

输入: [1,1,2]
输出:
[
  [1,1,2],
  [1,2,1],
  [2,1,1]
]

思路

1.这道题的思路与 46.全排列II是类似的,我们多结果进行去重处理即可。

Java代码实现

    public List<List<Integer>> permuteUnique(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> cur = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            cur.add(nums[i]);
        }
        backtrack(res,cur,cur.size(),0);
        Set<List<Integer>> set = new HashSet<>(res);
        return new ArrayList<>(set);
    }
    
    private void backtrack(List<List<Integer>> res,List<Integer> cur,int n,int first){
        if(n == first){
            res.add(new ArrayList<>(cur));
            return ;
        }
        for(int i=first;i<n;i++){
            Collections.swap(cur,i,first);
            backtrack(res,cur,n,first+1);
            Collections.swap(cur,i,first);
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例:****输入: [1,1,2]输出:[[1,1,...
    HITZGD阅读 284评论 0 0
  • 题目链接难度:中等 类型: 数组、深度优先搜索 给定一个可包含重复数字的序列,返回所有不重复的...
    wzNote阅读 5,189评论 0 4
  • 题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2]输出:[[1,1,2]...
    小强不是蟑螂啊阅读 411评论 0 0
  • 给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2]输出:[[1,1,2],[1...
    埋没随百草阅读 285评论 0 0
  • 给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2...
    皮蛋豆腐酱油阅读 62评论 0 0