classSolution: defsubsets(self, A: List[int]) -> List[List[int]]: deff(idx): for i inrange(len(Z)): Z.append(Z[i]+[A[idx]]) Z.append([A[idx]]) Z=[] S=[] A.sort() for i inrange(len(A)): S.append(i) f(i) Z.append([]) return Z
Solution2: backtrack
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
classSolution: defsubsets(self, A: List[int]) -> List[List[int]]: deff(start,curr): iflen(curr)==k: Z.append(curr[:]) return for i inrange(start,len(A)): curr.append(A[i]) f(i+1,curr) curr.pop() Z=[] for k inrange(len(A)+1): # length is from 0 to len(A) f(0,[]) return Z