字符:全排列

全排列

一丶递归算法

在这里插入图片描述
每次固定以为,递归寻找后面的全排列

如何解决重复问题

我们只使用重复出现的最后一位,每次检查数字后面有没有再次出现过,出现就continue,没有了就可以进行递归操作,这里的比较是O(n)的。假如需要更快的我们可以直接用空间来标记是否访问过,这就是O(1),但是这个算法到最后还是阶乘级别的。

二丶非递归算法

从小到大依次生成序列,比如

123 ,132 ,213, 231,312,321

问题就是关键找到紧邻的下一个排列,方法如下
在这里插入图片描述

C++STL已经在Algorithm中集成了
next_permutation

如果相等就再滑动下一位

发布了124 篇原创文章 · 获赞 92 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42146775/article/details/103753266
今日推荐