(Js)Leetcode46。完全な配置

トピック:

繰り返し番号のないシーケンスが与えられた場合、可能なすべての順列を返します。

例:

入力:[1,2,3]
出力:
[
  [1,2,3
  ]、
  [1,3,2]、
  [2,1,3]、
  [2,3,1 ]、[3,1,2 ]、
  [3,2,1]
]

アイデア:

バックトラッキングアルゴリズム

参照のアイデア

コード:

/**
 * @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();
    }
}

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113763794