本题可利用递归,将不同索引的数据加入到子集中,由于是不重复的数据,在添加之前判断子集是否已在结果中

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型二维数组
#
class Solution:
    def __init__(self):
        self.nums = []
        
    def subsets(self , nums: List[int]) -> List[List[int]]:
        # write code here
        self.all_subsets(0, sorted(nums), [])
        return self.nums
    
    def all_subsets(self, s: int, nums: List[int], subsets: List[int]) -> None:
        if s > len(nums):
            return
        if subsets not in self.nums:
            self.nums.append(list(subsets))
        for i in range(s, len(nums)):
            self.all_subsets(i + 1, nums, subsets + [nums[i]])