LeetCode-47-Permutations II 递归+dict
2017-09-16 17:57
489 查看
跟上个题差不多,只不过每次我都用set进行了一次Unique操作,然后TLE了。
然后我就加了个dict优化一下,头上数字相同的情况下就不进行递归了,然后就A了
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
Len=len(nums)
if Len==0:return []
if Len==1:return [nums]
ansSet=set()
used={}
for i in range(0,Len):
curC=nums[i]
if curC in used:continue
used[curC]=1
nextS=nums[:i]
nextS.extend(nums[i+1:])
returnS=self.permuteUnique(nextS)
for j in returnS:
curList=[curC]
curList.extend(j)
ansSet.add(tuple(curList))
return list(ansSet)
然后我就加了个dict优化一下,头上数字相同的情况下就不进行递归了,然后就A了
class Solution(object):
def permuteUnique(self, nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
Len=len(nums)
if Len==0:return []
if Len==1:return [nums]
ansSet=set()
used={}
for i in range(0,Len):
curC=nums[i]
if curC in used:continue
used[curC]=1
nextS=nums[:i]
nextS.extend(nums[i+1:])
returnS=self.permuteUnique(nextS)
for j in returnS:
curList=[curC]
curList.extend(j)
ansSet.add(tuple(curList))
return list(ansSet)
相关文章推荐
- leetcode 47. Permutations II 全排列问题(去掉重复元素)+递归
- leetcode 47. Permutations II
- leetCode 47.Permutations II (排列组合II) 解题思路和方法
- [LeetCode]47 Permutations II
- [leetcode] 47.Permutations II
- 【LeetCode】47.Permutations II(Medium)解题报告
- leetcode——47——Permutations II
- <LeetCode OJ> 47. Permutations II
- leetcode - 47. Permutations II(全排列)
- LeetCode47 Permutations II
- LeetCode 46 Permutations + LeetCode 47 Permutations II
- LeetCode-47.Permutations II
- leetCode 47.Permutations II (排列组合II) 解题思路和方法
- leetcode || 47、 Permutations II
- LeetCode47:Permutations II
- leetcode 47:Permutations II
- [LeetCode]--47. Permutations II
- leetcode_middle_93_47. Permutations II
- Leetcode 47. Permutations II (Medium) (cpp)
- leetcode - 47.Permutations II