首页 > 试题广场 >

集合的所有子集(二)

[编程题]集合的所有子集(二)
  • 热度指数:3105 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个整数数组 nums ,其中可能包含重复元素,请你返回这个数组的所有可能子集。

返回的答案中不能包含重复的子集,将答案按字典序进行排序。

数据范围:数组长度满足 ,数组中元素大小满足
示例1

输入

[1,2]

输出

[[],[1],[1,2],[2]]
示例2

输入

[1]

输出

[[],[1]]
使用位运算枚举的解法
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型二维数组
#
class Solution:
    def subsets(self , nums: List[int]) -> List[List[int]]:
        # write code here
        s = set()
        nums.sort()

        count = pow(2, len(nums))
        for i in range(count):
            b = bin(i)[2:]
            
            tmp = []
            for j in range(len(nums)-len(b), len(nums)):
                if b[j-(len(nums)-len(b))] == '1':
                    tmp.append(nums[j])

            s.add(tuple(tmp))

        res = list(s)
        res.sort()

        return res


发表于 2024-04-17 22:39:10 回复(0)

问题信息

难度:
1条回答 2371浏览

热门推荐

通过挑战的用户

查看代码