Permutations II
来源:互联网 发布:快餐店数据流程图 编辑:程序博客网 时间:2024/05/20 08:22
leetcode第47题,全排列的升级版,要求需要全排列的数组中有重复,输出去重后的结果。
这个题可以充分运用语言上的特点,比如先生成带有重复项的全排列,这在之前那道题目已经完成了,然后set一下去重,但是这样做太不自然了,复杂度肯定也会依赖于set去重操作,有没有自然去掉重复项的办法呢?
可以这样考虑,为什么会产生重复项,因为数组中含有重复数字。在每一轮深搜的时候,单独设置一个dict记录用到的数字,如果在碰到相同的数字出现,就会在字典里查出来,这就意味着这个数字不用再进行下一步dfs了,因为已经有一个和它完全相同的数字已经搜索了,这样就自然去重了。
class Solution(object): def permuteUnique(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ ans = [] def dfs(nums, ans, path): if not nums: ans.append(path) else: d = {} for i in xrange(len(nums)): if nums[i] not in d: dfs(nums[:i]+nums[i+1:], ans, path+[nums[i]]) d[nums[i]] = 1 nums.sort() dfs(nums, ans, []) return ans
0 0
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- Permutations and Permutations II
- Permutations && Permutations ii
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- Permutations II
- OS X 10.11 下Python-MySQLdb无法使用的问题
- java中ObjectInputStream与ObjectOutputStream的认识
- iOS内购审核被拒 错误状态码21007
- 生成随机数
- 深入理解Activity——生命周期、启动模式、taskAffinity
- Permutations II
- Linux开发--inotify事件机制
- 新知识-log4j日志管理-知识点-配置步骤-实例
- 性能优化--缓存篇
- android开发出现java.util.zip.ZipException: duplicate entry..
- [提高总结四]flexible box的布局练习
- 安卓集成微信支付总结 适合新手
- SQL语句学习
- AngularJS实现前后端分离模式下的权限控制