非空子集

2018-08-26  本文已影响0人  正在努力ing
请编写一个方法,返回某集合的所有非空子集。
给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于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)
上一篇 下一篇

猜你喜欢

热点阅读