美文网首页
leecode 47 :全排列 II

leecode 47 :全排列 II

作者: 小强不是蟑螂啊 | 来源:发表于2019-06-26 22:04 被阅读0次

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

示例:

输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
答案1:效率不高,在所有 JavaScript 提交中击败了10.76%的用户。是把所有的数组取到后,然后去掉相同的数组,这个效率很慢。

var permuteUnique = function(nums) {
    let result = [];
    let result2 = [];
    let obj = {};
    var func = function(arr,temp,o){
        if(arr.length ==0){
          result.push(temp)
        }
        for(var i=0;i<arr.length;i++){
           var newArr = arr.slice(0,i).concat(arr.slice(i+1));
            func(newArr,temp.concat(arr[i]),o);
        }
    }
    func(nums,[],{});
    result.forEach((item)=>{
        let str = [...item].join();
        if(!obj[str]){
            result2.push(item);
            obj[str] = true;
        }
    })
    return result2;
};

答案2:效率还行,击败了81.17%的用户

var permuteUnique = function(nums) {
    nums = nums.sort(function(a,b){return a-b})
    let result = [];
    let obj = {};
    var func = function(arr,temp,o){
        if(arr.length ==0){
          result.push(temp)
        }
        var same;
        for(var i=0;i<arr.length;i++){
            if(same === arr[i]){continue}else{
                same = arr[i]
            }
           var newArr = arr.slice(0,i).concat(arr.slice(i+1));
            func(newArr,temp.concat(arr[i]));
        }
    }
    func(nums,[]);
    return result;
};

相关文章

  • leecode 47 :全排列 II

    题目:给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2]输出:[[1,1,2]...

  • 47. 全排列 II

    47. 全排列 II[https://leetcode.cn/problems/permutations-ii/]...

  • 排列,组合,子集专题

    排列组合的题用回溯法和递归基本可以解决,总结一下。46.全排列 47.全排列II 47比46多了个序列可重复的条件...

  • 47. 全排列 II、39. 组合总和、40. 组合总和 II

    回溯的题 47. 全排列 II[https://leetcode-cn.com/problems/permutat...

  • YC-常考的题目

    46. 全排列 47. 全排列 II 有条件的全排列,打印出[1,2,2,3,4,5]的所有4不在头并且3和5不挨...

  • 搜索(二)回溯

    一、题目总结 基础问题 46.全排列 77.组合 78.子集 39.组合求和 47.全排列 II(重复元素) 90...

  • 47.全排列II

    题目给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例:****输入: [1,1,2]输出:[[1,1,...

  • LeetCode 47 全排列II

    给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 输入: [1,1,2]输出: [ [1,...

  • 47. 全排列 II

    给定一个可包含重复数字的序列,返回所有不重复的全排列。 示例: 思路 python3解法 来源:力扣(LeetCo...

  • 47. 全排列ii

    1. 题目描述 给定一个可包含重复数字的序列,返回所有不重复的全排列。 2. 解题思路 计算一个map,统计各个元...

网友评论

      本文标题:leecode 47 :全排列 II

      本文链接:https://www.haomeiwen.com/subject/kjzhcctx.html