解題構想-leetcode第四十六題:全配列
解題構想-leetcode第四十六題:全配列
タイトルの説明:重複する数字のないシーケンスを指定し、可能なすべての配列を返します.例:入力:[1,2,3]出力:[[1,2,3],[1,3,2],[2,1,3],[3,1,2],[3,2,1]]解題構想:本題は遡及法を採用し,再帰関数を用いて1つの数を挿入しようと試みたが,条件を満たさない場合,今回の再帰を飛び出し,次の数にループして再帰に入る.まず再帰関数を定義し,関数内部ではまず臨界条件判断を行い,現在の再帰関数の入力リストに要素がない場合,このとき得られた答えtを最終結果に追加する.次に、入力リストを巡回し、1つの数を巡回しないで、現在の答えを格納するリストtにこの数を追加し、残りの要素と現在の答えをパラメータとして次のラウンドに再帰する.すべての再帰が終了すると、結果が格納されたリストresが返される.コードは次のとおりです.
提出後、通過します.
タイトルの説明:重複する数字のないシーケンスを指定し、可能なすべての配列を返します.例:入力:[1,2,3]出力:[[1,2,3],[1,3,2],[2,1,3],[3,1,2],[3,2,1]]解題構想:本題は遡及法を採用し,再帰関数を用いて1つの数を挿入しようと試みたが,条件を満たさない場合,今回の再帰を飛び出し,次の数にループして再帰に入る.まず再帰関数を定義し,関数内部ではまず臨界条件判断を行い,現在の再帰関数の入力リストに要素がない場合,このとき得られた答えtを最終結果に追加する.次に、入力リストを巡回し、1つの数を巡回しないで、現在の答えを格納するリストtにこの数を追加し、残りの要素と現在の答えをパラメータとして次のラウンドに再帰する.すべての再帰が終了すると、結果が格納されたリストresが返される.コードは次のとおりです.
class Solution:
def permute(self, nums: List[int]) -> List[List[int]]:
res = []
def back(nums, t):
if not nums:
res.append(t)
return
for i in range(len(nums)):
back(nums[:i] + nums[i+1:], t + [nums[i]])
back(nums, [])
return res
提出後、通過します.