美文网首页LeetCode刷题
[LeetCode]78. 子集

[LeetCode]78. 子集

作者: 杏仁小核桃 | 来源:发表于2018-11-12 17:25 被阅读3次

78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
输入: nums = [1,2,3]
输出:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

解法1

class Solution:
    def subsets(self, nums):
        res = []
        nums.sort()
        for i in range(0, len(nums)+1):
            self.findSub(i, res, nums, [])
        return res
    
    def findSub(self, k, res_list, nums, sub_list):
            if k == len(sub_list):
                res_list.append(sub_list)
            else:
                for i in nums:
                    self.findSub(k, res_list, nums[nums.index(i)+1:], sub_list+[i])

解法2

解法1的简化版

class Solution:
    def subsets(self, nums):
        ans = []
        def find(cur,num):
            for i in range(len(num)):
                ans.append(cur+[num[i]])
                find(cur+[num[i]], num[i+1::])
        find([], nums)
        return ans+[[]]

解法3

class Solution:
    def subsets(self, nums):
        res = [[]]
        for num in nums :
            for temp in res[:] :
                x = temp[:]
                x.append(num)
                res.append(x)
        return res

解法4

class Solution:
    def subsets(self, nums):
        n=len(nums)
        if n==0:
            return []
        res=[]
        for i in range(2**n):
            s=i
            newlist=[]
            for j in range(n):
                bitj=s%2
                s=s//2
                if bitj:
                    newlist.append(nums[j])
            res.append(newlist)
        return res

相关文章

  • LeetCode-78-子集

    LeetCode-78-子集 78. 子集[https://leetcode-cn.com/problems/su...

  • 回溯递归算法

    回溯大法严重依赖【递归】 1、求子集 78. 子集[https://leetcode-cn.com/problem...

  • 子集 + 子集 II AND 零花钱兑换 + 零钱兑换 II

    78. 子集[https://leetcode-cn.com/problems/subsets/] 方法一 枚举 ...

  • Leetcode 78 子集

    78. 子集[https://leetcode-cn.com/problems/subsets/] 题意:给你一个...

  • 78. 子集、90. 子集 II

    78. 子集[https://leetcode-cn.com/problems/subsets/] 给你一个整数数...

  • 4.数组(四)

    https://leetcode-cn.com/tag/array/ 题目汇总75. 颜色分类中等78. 子集中等...

  • 回溯算法团灭子集、排列、组合问题

    读完本文,你可以去力扣拿下如下题目: 78.子集[https://leetcode-cn.com/problems...

  • [LeetCode]78. 子集

    78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子...

  • 78. 子集-leetcode

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例...

  • LeetCode:78. 子集

    问题描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包...

网友评论

    本文标题:[LeetCode]78. 子集

    本文链接:https://www.haomeiwen.com/subject/ccbcfqtx.html