题目:
题目截图:
解题步骤:
使用回溯算法
1.用递归模拟出所有情况
2.遇到包含重复元素的情况,就回溯
3.收集所有到达递归终点的情况,并返回
代码:
/**
* @param {number[]} nums
* @return {number[][]}
*/
var permute = function(nums) {
const res = [];
const backtrack = path => {
if (path.length === nums.length) {
res.push(path);
return;
}
nums.forEach(n => {
if (path.includes(n)) return;
backtrack(path.concat(n));
});
};
backtrack([]);
return res;
};
时间复杂度分析:
时间复杂度是O(n!)
空间复杂度分析:
空间复杂度是O(n)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪 !!!