• [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
  • 相关阅读:
    C++ 派生类对象的构造与析构过程
    C++ lvalue(左值)和rvalue(右值)
    enum class 用法
    gcc 编译选项
    using用法总结
    const用法及与constexpr区别总结
    Lanbda表达式
    CMake 用法总结(转载)
    ElasticSearch学习文档
    Maven学习笔记
  • 原文地址:https://www.cnblogs.com/zuoyuan/p/3758346.html
Copyright © 2020-2023  润新知