我想到了回溯!但还是没写对T^T呜呜呜
参考链接:
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res = []
# nlen = len(nums)
# flag = [0] * nlen 最开始想的是管理一个nums长度的数组,标记有没有用过这个下标的数,但是看参考链接是直接将用过的数字裁掉(我怎么没想到...)
def backtrack(combination,nums):
if len(nums) == 1: res.append(combination+[nums[0]]) # 如果只有一个了,直接加入就行
for i in range(len(nums)):
backtrack(combination+[nums[i]], nums[:i] + nums[i+1:]) # 传进去的参数在现在的基础上有变化,但是每个循环中,combin一直没有变,相当于回溯;nums[:i] + nums[i+1:]裁掉使用过的数,拼接成新的数组
backtrack([], nums)
return res