[Leetcode][python]Permutations II/全排列 II

朱雀 2022-06-07 02:11 304阅读 0赞

题目大意

求一组数的全排列(有重复数字),返回不重复的全排列

解题思路

详见上一题:http://blog.csdn.net/qqxx6661/article/details/78154064
投机取巧:将数组排序,然后就可以和前面一个数对比,如果重复直接忽略掉。只需新增3行代码

代码

  1. class Solution(object):
  2. def permuteUnique(self, nums):
  3. """
  4. :type nums: List[int]
  5. :rtype: List[List[int]]
  6. """
  7. result = []
  8. nums.sort() # 排序
  9. return self.get_permute(nums)
  10. def get_permute(self, nums):
  11. if len(nums) <= 1:
  12. return [nums]
  13. ans = []
  14. for i, num in enumerate(nums):
  15. if i == 0 or nums[i] != nums[i - 1]: # 加一行对比前一个数
  16. n = nums[:i] + nums[i+1:] # n是剩余数的list
  17. for y in self.get_permute(n): # 直到函数有return,一个数的时候[nums],所以y是list
  18. ans.append([num] + y)
  19. return ans

总结

发表评论

表情:
评论列表 (有 0 条评论,304人围观)

还没有评论,来说两句吧...

相关阅读

    相关 47. 排列 II

    > 关上过去和未来的铁门,活在“今天”这个舱室中。——《人性的优点》 47. 全排列 II 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列

    相关 47.排列 II

    47.全排列 II 题干描述 解题思路 拓展 总结 代码实现 题干描述 [力扣入口][Link 1] 给定一个可包含重复数字的序列

    相关 47. 排列 II

    给定一个可包含重复数字的序列 `nums` ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出: [[1,