力扣刷题(python)50天——第二十四天:子集

力扣刷题(python)50天——第二十四天:子集

题目描述

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

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subsets
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法

本题本想用递归回溯,但是有些小坎迈不过去。
参考,觉得迭代那部实在是醍醐灌顶,刚好解决了我的问题,最后发现还是单纯迭代简单:

https://leetcode-cn.com/problems/subsets/solution/hui-su-suan-fa-by-powcai-5/

解答

class Solution(object):
    def subsets(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        ans=[[]]
        for i in nums:
            ans=ans+[each+[i] for each in ans]
        return ans

执行结果

力扣刷题(python)50天——第二十四天:子集_第1张图片

心得:

这类理论多重循环但无法设置,又可以用到之前的数据,迭代真的好用

你可能感兴趣的:(leetcode刷题)