LeetCode 46 – Python 3 (Week 06 – 14)

Solution 1

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        perms = [[]]
        
        for num in nums:
            new_perms = []
            for perm in perms:
                for i in range(len(perm)+1):
                    new_perms.append(perm[:i] + [num] + perm[i:])
            perms = new_perms      
            
        return perms              

Time complexity is O(n!). Space complexity is O(1).

Solution 2

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        if len(nums) <= 1:
            return [nums]
        
        perms = []
        
        for i, num in enumerate(nums):
            n = nums[:i] + nums[i+1:]
            for y in self.permute(n):
                perms.append([num] + y)
                
        return perms

Time complexity is O(n!). Space complexity is O(1).

Leave a comment

Design a site like this with WordPress.com
Get started