• [leetcode]Subsets II @ Python


    原题地址:https://oj.leetcode.com/problems/subsets-ii/

    题意:

    Given a collection of integers that might contain duplicates, S, return all possible subsets.

    Note:

    • Elements in a subset must be in non-descending order.
    • The solution set must not contain duplicate subsets.

    For example,
    If S = [1,2,2], a solution is:

    [
      [2],
      [1],
      [1,2,2],
      [2,2],
      [1,2],
      []
    ]

    解题思路:和上一道题一样,求一个集合的所有子集。和上一道题不一样的一点是集合可能有重复元素。这道题同样使用dfs来解题,只是需要在dfs函数里加一个剪枝的条件,排除掉同样的子集。

    代码:

    class Solution:
        # @param num, a list of integer
        # @return a list of lists of integer
        def subsetsWithDup(self, S):
            def dfs(depth, start, valuelist):
                if valuelist not in res: res.append(valuelist)
                if depth == len(S): return
                for i in range(start, len(S)):
                    dfs(depth+1, i+1, valuelist+[S[i]])
            S.sort()
            res = []
            dfs(0, 0, [])
            return res
  • 相关阅读:
    Samba网络配置
    嵌入式汇编程序
    GDB常用命令
    Everything搜索结果显示0 Object
    关于值类型和引用类型
    Main()

    利用python脚本自动下载ICML会议接受的文章
    如何从mac下的photos导出照片
    Erlang语言研究综述
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3758346.html
Copyright © 2020-2023  润新知