Permutations II
https://leetcode.com/problems/permutations-ii/description/
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
Thoughts
和subsets-ii处理思路是一致的. 同样是要把不是一层的相同数字考虑进来, 而把是同一层的相同数字忽略. 如果nums 是[1, 1, ..., 1, 2], 那么在第一层时引入第一个[1], 那么接下来的所有1都不应该作为第一层, 全部skip. 在第二层可以引入第二个1, 那么第三个和第N个1都不该在第二层出现了, 可以全部跳过. 以此类推.
那么我们是否可以用一个map, 记录在哪层访问过哪个数字, 以后再到那层时跳过他们不就好了. 错, 因为每层能引入谁是针对当前path来说的, 而不是全局. 拿[1, 1, 2]举例子. 在得到[1, 1, 2]和[1, 2, 1]后, 如果用全局记录我们就无法再得到[2, 1, 1]了. 因为1已经出现在过第二个位置上了.
Code
Analysis
时间复杂度还是O(N!), 空间O(N).
Last updated