반응형
Problem
Given a collection of distinct integers, return all possible permutations.
Example:
Input: [1,2,3] Output: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]
Solution
•종료 조건 : index가 현재 배열의 길이와 같을 때.
•i번째 원소와 현재 선택한 원소(first)를 바꾸고
•i+1번째 원소부터 다시 탐색을 시작한다.
•i번째 원소를 다시 돌려 놓는다. (다음 탐색에 영향을 주지 않기 위해서.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class Solution: def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ if not nums : return [] ans = [] n = len(nums) def backtrack(first=0) : if first == n : ans.append(nums[:]) for i in range(first, n) : nums[i], nums[first] = nums[first], nums[i] backtrack(first+1) nums[i], nums[first] = nums[first], nums[i] backtrack() return ans | cs |
Complexity Analysis
• Time complexity : \(O(N!)\) to build N! solutions.
•Space complexity : \(O(N!)\) since one has to keep N! solutions.
Source
반응형
'0 > algorithm' 카테고리의 다른 글
Add Binary (in Python) (0) | 2019.01.23 |
---|---|
Rotate Image (in Python) (0) | 2019.01.23 |
Spiral Matrix (in Python) (0) | 2019.01.23 |
Find First and Last Position of Element in Sorted Array (in Python) (0) | 2019.01.22 |
Next Permutation (in Python) (0) | 2019.01.21 |