46. 全排列
题目描述
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
思路
bfs
代码
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
class Node:
def __init__(self, li1, li2):
self.li1 = li1
self.li2 = li2
stark = []
res = []
for i, itme in enumerate(nums):
li = nums[:]
li.pop(i)
tmpNode = Node([itme], li)
stark.append(tmpNode)
while stark:
tmp = stark.pop()
if len(tmp.li2) <= 1:
res.append(tmp.li1 + tmp.li2)
else:
for i, item in enumerate(tmp.li2):
li = tmp.li2[:]
li.pop(i)
tmpNode = Node(tmp.li1 + [tmp.li2[i]], li)
stark.append(tmpNode)
return res
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/permutations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。