6
输出向量的所有不同排列
挑战: 输出一个可能很长的正整数列表的所有不同排列。您可能会假设测试时向量的数目少于1,000,但是从理论上讲,该过程应适用于任何一个数目大于一个的向量,而不论大小。 限制条件: 您必须将内存使用量限制为O(n ^ 2),其中n是输入向量中元素的数量。您不能拥有O(n!)。这意味着您无法将所有排列存储在内存中。 您必须将时间复杂度限制为O(result size * n)。如果所有数字相等,则为O(n);如果所有数字均不同,则为O(n!* n)。这意味着您无法创建一个排列并将其与所有其他排列进行检查以确保唯一性(这将是O(n!^ 2 * n))。 可以接受表明满足时间和内存限制的经验度量。 您实际上必须打印/输出排列(因为不可能存储它们)。 如果您运行程序足够长的时间,那么所有排列都应输出(理论上)! 不同的排列: 列表[ 1,1,2 ]具有三个排列,而不是六个:[ 1,1,2 ],[1,2,1]和[2,1,1]。您可以选择输出的顺序。 可管理的测试用例: Input: [1, 2, 1] Output: [1, 1, 2] [1, 2, 1] [2, 1, 1] Input: [1, 2, 3, 2] Output: [1, 2, 2, 3] [1, 2, …