每次固定以为,递归寻找后面的全排列
我们只使用重复出现的最后一位,每次检查数字后面有没有再次出现过,出现就continue,没有了就可以进行递归操作,这里的比较是O(n)的。假如需要更快的我们可以直接用空间来标记是否访问过,这就是O(1),但是这个算法到最后还是阶乘级别的。
从小到大依次生成序列,比如
123 ,132 ,213, 231,312,321
问题就是关键找到紧邻的下一个排列,方法如下
C++STL已经在Algorithm中集成了 next_permutation
如果相等就再滑动下一位