[Leetcode]Subsets II

来源:互联网 发布:网络感情最新骗术 编辑:程序博客网 时间:2024/05/17 03:24

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],  []]

Subsets的扩展题,这题里S可能出现重复元素~

如果是重复数字, 只扩展上一次的结果preSet, 如果是不重复数字, 则扩展全部结果res~

class Solution:    # @param num, a list of integer    # @return a list of lists of integer    def subsetsWithDup(self, S):        res, preSet, preNum = [[]], [], None        S.sort()        for num in S:            oldSet = res[:] if num != preNum else preSet[:]            preNum = num            preSet = []            for j in oldSet:                preSet.append(j + [num])                res.append(j + [num])        return res


0 0
原创粉丝点击