```python
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param num int整型一维数组
# @return int整型二维数组
#
class Solution:
def permute(self , num: List[int]) -> List[List[int]]:
# write code here
ans=[] #存放全部结果的数组
lens=len(num)
cur = [0 for i in range(lens)] #存放全排列的数组‘】
#permutation函数的意思是将num里面的数据进行全排列
#排列的结果放在同样长度的cur表里面
#当前函数执行的意思是,从nums数组里面选择一个数字放入cur[pos]里面
def permutaltion (pos,lens,num,cur):
if (pos==lens):
ans.append([i for i in cur]) #排列结束,到达边界,加入结果数组
return
for i in range(lens): #尝试将num[i]放入cur[pos]中
flag=0 #标记位
for j in range(pos):#如果在nums[i]已经存在于cur[0..pos-1]中,则置1
if cur[j]==num[i]: #因为一个数字在cur数组中只允许出现一次
flag=1 #如果已经出现,那么就要继续遍历nums数组找到合适的数字
if flag==0: #没有置1,证明nums[i]还未出现,可以选择
cur[pos]=num[i] #将nums[i]放入cur[pos]中
permutaltion(pos+1,lens,num,cur) #cur[0..pos]都已经安排好,所以下一次迭代需要为cur[pos+1]找到合适的数字
permutaltion(0,lens,num,cur)
return ans