iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
自我挑戰組

30天 Leetcode解題之路系列 第 25

Day 25 - Permutations

大家好,我是毛毛。ヾ(´∀ ˋ)ノ
廢話不多說開始今天的解題Day~


46. Permutations

Question

Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.


Example

Example1

Input: nums = [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

Example2

Input: nums = [0,1]
Output: [[0,1],[1,0]]

Example3

Input: nums = [1]
Output: [[1]]

Constraints

  • 1 <= nums.length <= 6
  • -10 <= nums[i] <= 10
  • All the integers of nums are unique.

解題

題目

首先先簡單的翻譯一下題目
給一組陣列,回傳該陣列的所有排列可能。

Think

作法大致上是這樣

  • 用遞迴的方式做~以[1, 2, 3]當例子
  • for loop 先選出來一個出來1,剩下[2, 3],再繼續做遞迴,一直到進入遞迴的第一個if長度為0的時候回傳ans。

Code

Python

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        ans = []
        
        if len(nums) in [0, 1]:
            ans.append(nums)
        
            return ans

        for index in range(len(nums)):
            for remain in self.permute(nums[:index] + nums[index+1:]):
                ans.append([nums[index]] + remain)

        return ans

Result

  • Python

大家明天見/images/emoticon/emoticon29.gif


上一篇
Day 24 - Single Number
下一篇
Day 26 - Palindrome Number
系列文
30天 Leetcode解題之路30

尚未有邦友留言

立即登入留言