LeetCode Problem 46-Permutations Posted on 2019-03-18 | In LeetCode | Visitors 全排列。给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 12345678910输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路一 回溯法。 12345678910111213class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def backtrack(result, tmp, nums): if len(tmp) == len(nums): result.append(tmp) return for i in range(0, len(nums)): if nums[i] in tmp: continue backtrack(result, tmp+[nums[i]], nums) result = [] backtrack(result, [], nums) return result 思路二 回溯法的另一种写法,省去了判断元素是否存在的过程。 1234567891011class Solution: def permute(self, nums: List[int]) -> List[List[int]]: def backtrack(result, tmp, nums): if len(nums) == 0: result.append(tmp) return for i in range(0, len(nums)): backtrack(result, tmp+[nums[i]], nums[:i]+nums[i+1:]) result = [] backtrack(result, [], nums) return result 相似问题 Next Permutation Permutations II Permutation Sequence Combinations 此时不赞何时赞! 赏 微信打赏 支付宝打赏