Skip to content

全排列2

js
function fn(nums){
    nums.sort()
    const res = [], path = [], len = nums.length, used = new Array(len).fill(false)
    handle()
    return res
    function handle(){
        if(path.length === len){
            res.push([...path])
            return
        }
        for (let i = 0; i < len; i ++){
            if(i > 0 && nums[i] === nums[i - 1] && !used[i - 1] || used[i]){
                continue
            }
            path.push(nums[i])
            used[i] = true
            handle()
            path.pop()
            used[i] = false
        }
    }
}
console.log(fn([1,1,2,1]))
function fn(nums){
    nums.sort()
    const res = [], path = [], len = nums.length, used = new Array(len).fill(false)
    handle()
    return res
    function handle(){
        if(path.length === len){
            res.push([...path])
            return
        }
        for (let i = 0; i < len; i ++){
            if(i > 0 && nums[i] === nums[i - 1] && !used[i - 1] || used[i]){
                continue
            }
            path.push(nums[i])
            used[i] = true
            handle()
            path.pop()
            used[i] = false
        }
    }
}
console.log(fn([1,1,2,1]))