47. 全排列II
来源:力扣(LeetCode)
链接: https://leetcode.cn/problems/permutations-ii/
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
示例 1:
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]
示例 2:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
提示:
- 1 <= nums.length <= 8
- -10 <= nums[i] <= 10
解法
本题的区别是相同元素的重复组合需要进行过滤,相同元素可以使用排序以及哈希表进行过滤处理。排序就是相邻元素如果相同的话且前一个进行处理后,下一个相同元素就不进行处理;
- 递归: 遍历元素,剩余的列表元素按照同样的方法求得组合,再对组合进行遍历,将左边遍历的元素加入到每种组合的前面作为最终的一种组合,再将该组合放入到结果列表中;