class Solution(object):
    def helper(self, res, list1, n, k, start):
        if k == 0:
            res.append(list1[:])
            return
        for i in range(start, n+1):
            list1.append(i)
            self.helper(res, list1, n, k - 1, i + 1)
            list1.pop()


    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        res = []
        self.helper(res, [], n, k, 0)
        return res

78. 子集

class Solution(object):
    def helper(self, res, list1, nums, index):
        res.append(list1[:])
        for i in range(index, len(nums)):
            list1.append(nums[i])
            self.helper(res, list1, nums, i + 1)
            list1.pop()

    def subsets(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        res = []
        if not nums oor len(nums) == 0:
            return res
        self.helper(res, [], nums, 0)
        return res