[leetcode-python3] 78. Subsets

shsh·2020년 12월 24일
0

leetcode

목록 보기
40/161

78. Subsets - python3

Given an integer array nums, return all possible subsets (the power set).

The solution set must not contain duplicate subsets.

My Answer 1: Accepted (Runtime: 28 ms - 93.79% / Memory Usage: 14.3 MB - 51.97%)

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        if len(nums) == 1:
            return [[],[nums[0]]]
        
        def backtracking(nums, path):
            if not nums:
                result.append(path)
            
            for i in range(0, len(nums)):
                backtracking(nums[i+1:], path+[nums[i]]) 
        
        result = [[]]
        num = []
        
        for i in range(0, len(nums)):
            num.append(nums[i])
            backtracking(num, path = []) 
        
        return result

permutations 트라우마가 24 시간도 안돼서 부활하다...

보자마자 backtracking 을 생각했다

permutations 의 backtracking

def backtracking(nums, path):
            if not nums:
                result.append(path)

            for i in range(0, len(nums)):
                backtracking(nums[:i] + nums[i+1:], path+[nums[i]] ) 

        result = []
        backtracking(nums, path = [])
  • backtracking(nums[i+1:], path+[nums[i]])
    => duplicate subsets 을 없애기 위해 nums[i+1:] 만 이용
  • backtracking(num, path = [])
    => nums 의 원소를 하나씩 추가해서 넘겨주기 위해 num 이용

backtracking 은 무조건 외우는 걸로...^^

profile
Hello, World!

0개의 댓글

관련 채용 정보