赞
踩
解题思路:
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.result
-
- def 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]:
- continue
- self.path.append(nums[i])
- self.trackBack(nums, i+1)
- self.path.pop()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。