permutations II(全排列 2)
题目要求 Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example, [1,1,2] have the following unique permutations: [ [1,1,2], [1,2,1], [2,1,1] ] 对于其基础题PermutationsI请参考我的 另一篇博客 这里添加的难度在于,排列组合的数字中可能存在重复。这就需要想方法,将结果集中重复的结果删去。而这里,我参考了另一名答题者的答案, 在试图将数字添入结果集中时,就判断会不会产生重复的结果 ,从而使避免重复。 PermutationsI也可以使用此方法。。 代码和解析 这里采用了递归的思路。 避免重复的核心思路在于 ,使用一个boolean数组来代表当前的数值是否已经被使用过。当前的值如果已经被使用过,则继续判断下一个数值。如果当前的值为重复值,则只要前面的值没有被使用过,则当前值就不可以被使用。这样确保了只有第一个出现的重复值可以算进结果集,后序重复的情况不会被添加进结果集。 例如,假设输入的数组为 [1,1,2] 。则当第一个1被添加进结果集时,可以继续使用第二个1作为元素添加进结果集从而生成112。同理