解题思路:
1.此题与Leetcode78.子集,类似。但是加了一个条件就是给定的nums不是唯一的。
2.需要注意的是纵向的树枝重复是允许的,而横向的数层重复需要规避,规避代码:
if i > start and nums[i] == nums[i-1]:continue
注意:
1.是i > start,这些边缘的位置要考虑清楚。
代码:
class Solution(object):result = []path = []def subsetsWithDup(self, nums):self.result = []nums.sort()self.trackBack(nums, 0)return self.resultdef trackBack(self, nums, start):self.result.append(self.path[:])for i in range(start, len(nums)):if i > start and nums[i] == nums[i-1]:continueself.path.append(nums[i])self.trackBack(nums, i+1)self.path.pop()