zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):090-Subsets II

    题目来源:

      https://leetcode.com/problems/subsets-ii/


    题意分析:

      给定一个存在重复元素的集合,然后他所有的可能子集。子集不能包括重复元素,元素必须安排字典序排序。


    题目思路:

      这题和前面的找到所有子集类似。不同的是他存在重复元素,那么我们添加的时候用字典判断一下时候有重复就可以了。要注意的是list不可以当作字典的key,所以要将list转化成str充当key。要保证字典序排序,那么要将集合先进行排序。


    代码(Python):

      

     1 class Solution(object):
     2     def subsetsWithDup(self, nums):
     3         """
     4         :type nums: List[int]
     5         :rtype: List[List[int]]
     6         """
     7         nums.sort()
     8         def subset(nums,index):
     9             if index == 0:
    10                 return [[]]
    11             tmp = subset(nums,index - 1)
    12             ans,visit = tmp[:],{}
    13             for i in tmp:
    14                 visit[str(i)] = True
    15             for i in tmp:
    16                 if not str(i + [nums[index - 1]]) in visit:
    17                     visit[str(i + [nums[index - 1]])] = True
    18                     ans.append(i + [nums[index - 1]])
    19             return ans
    20         return subset(nums,len(nums))
    21                     
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/5088747.html 

  • 相关阅读:
    python使用thrift访问操作hbase
    js打开新页面
    设计模式
    c# dotfuscator 混淆后无法使用
    SQL server清空数据库日志脚本
    SQlserver 行转列
    SQLServer 脚本测试
    C# HttpWebRequest与HttpWebResponse详解
    反射
    SQl server master
  • 原文地址:https://www.cnblogs.com/chruny/p/5088747.html
Copyright © 2011-2022 走看看