Leetcode练习(Python):数组类:第90题:给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。

题目:
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。  说明:解集不能包含重复的子集。
思路:
与第78题思路一样,用迭代法,对重复的数据进行判断再进行操作就可以。
程序:
class Solution:
    def subsetsWithDup(self, nums: List[int]) -> List[List[int]]:
        nums.sort()
        length = len(nums)
        if length <= 0:
            return [[]]
        if length == 1:
            return [[],nums]
        result = [[]]
        auxiliary = []
        for index1 in range(length):
            if index1 >= 1 and nums[index1 - 1] == nums[index1]:
                auxiliary = [[nums[index1]] + index2 for index2 in auxiliary]
            else:
                auxiliary = [[nums[index1]] + index2 for index2 in result]
            result +=auxiliary
        return result

猜你喜欢

转载自www.cnblogs.com/zhuozige/p/12766785.html