回溯
#
# @param S int整型一维数组
# @return int整型二维数组
#
class Solution:
def subsets(self , S: List[int]) -> List[List[int]]:
# res收集所有子集,track记录访问过的元素
res,track = [],[]
def backTrack(S,start,track):
res.append(track[:])
if len(track) == len(S):
return
for i in range(start,len(S)):
track.append(S[i])
backTrack(S, i+1, track) # start=i+1,每次下标递增1,避免出现子集重复的情况,如[2,4]与[4,2]
track.pop()
backTrack(S, 0, track)
return res