(Js) Leetcode 46. Full arrangement

topic:

Given a sequence without repeated numbers, return all possible permutations.

Example:

Input: [1,2,3]
Output:
[
  [1,2,3],
  [1,3,2],
  [2,1,3],
  [2,3,1],
  [3,1,2 ],
  [3,2,1]
]

Ideas:

Backtracking algorithm

Reference ideas

Code:

/**
 * @param {number[]} nums
 * @return {number[][]}
 */
var permute = function(nums) {
    let res = [], track = [];
    backtrack(res, nums, track);
    return res;
};

var backtrack = function(res, nums, track) {
    // 触发结束条件
    if (track.length == nums.length) {
        return res.push([...track]);;
    }
    for (let i = 0; i < nums.length; i++) {
        // 排除不合法的选择
        if (track.includes(nums[i])) continue;
        // 做选择
        track.push(nums[i]);

        // 进入下一层决策树
        backtrack(res, nums, track);
        // 取消选择
        track.pop();
    }
}

operation result:

Guess you like

Origin blog.csdn.net/M_Eve/article/details/113763794