代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T83% S98%):直接调用python库函数
itertools.permutations(nums, len(nums)) - 解法2(JS T17% S5%):回溯,参数分别为parts数组和visited集合,当parts的长度等于原数组长度则添加到结果中,visited用于存储哪些数字已经用过了,从原数组中排除这些用过的,就是当前位可以添加并继续递归的
var permute = function(nums) {
var res = [];
var sets = new Set(nums)
var deepin = function(parts, visited) {
if (parts.length == nums.length) {
res.push(parts);
return;
}
for (var item of [...nums].filter(x => !new Set(visited).has(x))) {
deepin(parts.concat(item), visited.concat(item));
}
};
deepin([], []);
return res;
};
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
return list(itertools.permutations(nums, len(nums)))
文章介绍了如何使用Python解决Leetcode上的全排列问题。提供了两种解法,一种是直接调用itertools.permutations函数,另一种是通过回溯算法实现。代码示例中详细展示了这两种方法的实现过程,包括回溯算法的递归逻辑。
163

被折叠的 条评论
为什么被折叠?



