LeetCode刷题笔记78:子集(Python实现)

系统 1365 0

题目描述:

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

说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

          

SOLUTION1:迭代法

比较常规的迭代法思路,循环nums数组,每次访问其中元素,将其转化为数组并加到result二维数组当中。

CODE:

            
              class Solution:
    def subsets(self,nums):
        '''
        nums:list[int]
        return:list[list[int]]
        '''
        if len(nums) == 0:
            return [[]]
        result = [[]]
        for i in nums:
            result = result + [[i] + num for num in result]
        return result
    
        

            
          

SOLUTION2:递归法

CODE:

            
              class Solution:
    def subsets(self,nums):
        if len(nums) == 0:
            return [[]]
        result = []
        def helper(i,tmp):
            result.append(tmp)
            for j in range(i,len(nums)):
                helper(j+1,tmp+nums[j])
        helper(0,[])
        return result
            
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论