zoukankan      html  css  js  c++  java
  • 17. 子集

    17. 子集

    中文English

    给定一个含不同整数的集合,返回其所有的子集。

    样例

    样例 1:

    输入:[0]
    输出:
    [
      [],
      [0]
    ]
    

    样例 2:

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

    挑战

    你可以同时用递归与非递归的方式解决么?

    注意事项

    子集中的元素排列必须是非降序的,解集必须不包含重复的子集。

     
     
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param nums: A set of numbers
        @return: A list of lists
        """
        '''
        大致思路:
        1.循环,取出所有符合的子集,最后加[]进来,返回
        '''
        def subsets(self, nums):
            res = []
            for i in range(len(nums)):
                if i == 0:
                    res.append([nums[i]])
                else:
                    for j in range(len(res)):
                        res.append(sorted(res[j] + [nums[i]]))
                    res.append([nums[i]])
            res = res + [[]]
            return res 

    18. 子集 II

    中文English

    给定一个可能具有重复数字的列表,返回其所有可能的子集。

    样例

    样例 1:

    输入:[0]
    输出:
    [
      [],
      [0]
    ]
    

    样例 2:

    输入:[1,2,2]
    输出:
    [
      [2],
      [1],
      [1,2,2],
      [2,2],
      [1,2],
      []
    ]
    

    挑战

    你可以同时用递归与非递归的方式解决么?

    注意事项

    • 子集中的每个元素都是非降序的
    • 两个子集间的顺序是无关紧要的
    • 解集中不能包含重复子集
     
     
    输入测试数据 (每行一个参数)如何理解测试数据?
    class Solution:
        """
        @param nums: A set of numbers.
        @return: A list of lists. All valid subsets.
        """
        '''
        大致思路:
        1.循环,取出所有符合的子集,最后加[]进来,返回
        '''
        def subsetsWithDup(self, nums):
            res = []
            for i in range(len(nums)):
                if i == 0:
                    res.append([nums[i]])
                else:
                    for j in range(len(res)):
                        a = sorted(res[j] + [nums[i]])
                        if a not in res:
                            res.append(a)
                    if [nums[i]] not in res:
                        res.append([nums[i]])
            res = res + [[]]
            return res 
  • 相关阅读:
    leetcode74
    leetcode59
    leetcode1283
    0079. Word Search (M)
    0067. Add Binary (E)
    0203. Remove Linked List Elements (E)
    用async 解放你的大脑
    Python 类属性和方法
    Python 类装饰器
    Python 装饰器
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12826419.html
Copyright © 2011-2022 走看看