46. 全排列(回溯)

题目

46. 全排列

思路

使用一个数组记录已经使用过的数

代码

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function(nums) {
    let ans = [], tmp = [], status = new Array(nums.length).fill(true);
    function back(tmp, status){
        if(tmp.length === nums.length){
            ans.push([...tmp]);
            return;
        }
        for(let i = 0; i < nums.length; i++){
            if(status[i]){
                tmp.push(nums[i]);
                status[i] = false;
                back(tmp, status);
                tmp.pop();
                status[i] = true;
            }
        }
    }
    back(tmp, status);
    return ans;
};
上一篇:46. 把数字翻译成字符串


下一篇:noip模拟46 *skw的树