[Leetcode] - 46

4590 단어 DFSpermutationDFS
  • permutation은 재귀로 구현 가능
  • 매번 다른 숫자를 선택하는것을 반복, 남은 숫자가 없을 때까지 반복
  • python 은 객체참조이므로 (대부분) 값을 저장할때 copy해서 저장 '[:]'
  • 복잡한 리스트, 객체는 copy.deepcopy 사용

itertools 사용


import itertools

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        ret = list(itertools.permutations(nums))
        return ret

dfs 사용


class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        
        ret = []
        prev_elements = []
        def dfs(elements):
            if len(elements) == 0:
                ret.append(prev_elements[:])
            
            for e in elements:
                next_elements = elements[:]
                next_elements.remove(e)
                
                prev_elements.append(e)
                dfs(next_elements)
                prev_elements.pop()
                
        dfs(nums)
        return ret

좋은 웹페이지 즐겨찾기