請編寫一個方法,返回某集合的所有非空子集。
給定一個int數(shù)組A和數(shù)組的大小int n,請返回A的所有非空子集。保證A的元素個數(shù)小于等于20,且元素互異。各子集內部從大到小排序,子集之間字典逆序排序,見樣例。
測試樣例:
[123,456,789]
返回:{[789,456,123],[789,456],[789,123],[789],[456 123],[456],[123]}
方法一:
class Subset:
# 返回二維[[],[],[]]
def getSubsets(self, A, n):
# write code here
A.sort(reverse=True)
self.result = []
self.getS(A,n,[])
return self.result
def getS(self,A,n,buff):
buff1 = [v for v in buff]
buff1.append(A[-n])
if n == 1:
self.result.append(buff1)
if buff:
self.result.append(buff)
return
self.getS(A,n-1,buff1)
self.getS(A,n-1,buff)