IV. Permutations and Subsets
Back Tracing Algorithm
Subsets coding:
class Solution:
def helper(self, nums, index, level, result):
# stop condition
if index == len(nums):
return
# regular case
for i in range (index, len(nums)):
level.append(nums[i])
result.append(level[:])
self.helper(nums, i+1, level, result)
level.pop()
def subsets(self, nums: List[int]) -> List[List[int]]:
# edge case
result = []
result.append([])
if len(nums) == 0:
return nums
# regular case
level = []
self.helper(nums, 0, level, result)
return resultPermutation:
When using the above methods, think about three questions:
Array.sort()-- remove duplicatesresult.append()-- when output the resultif (condition): continue-- skip condition
Difference between Subsets and Permutation:
The usage of index, stop condition in helper function, the time of adding levels to result.
常见的变形题:
是否能接受重复的元素,是否能接受重复的levels
大多数变型题都是permutation(排列)。
Last updated
Was this helpful?