Data structures 查找给定数字的下一个较大的字谜
找到给定数字下一个较大的字谜的有效算法是什么 示例:Data structures 查找给定数字的下一个较大的字谜,data-structures,anagram,Data Structures,Anagram,找到给定数字下一个较大的字谜的有效算法是什么 示例: 输入:7813->输出:7831 输入:3791->输出:3917 输入:4321->输出:(无) 基本上是从右向左移动数字。一旦你找到一个递减的数字,你就停止。将该数字与前面的所有数字进行比较。将其替换为下一个最高数字,然后按递增顺序对其余数字进行排序。例如: 以978654321为例。 1) 从右向左移动,直到达到递减数字: Stop at the 7 because that is the first digit that decrea
基本上是从右向左移动数字。一旦你找到一个递减的数字,你就停止。将该数字与前面的所有数字进行比较。将其替换为下一个最高数字,然后按递增顺序对其余数字进行排序。例如: 以978654321为例。 1) 从右向左移动,直到达到递减数字:
Stop at the 7 because that is the first digit that decreases.
2) 找到我们已经看到的下一个最大数字:
out of 1 2 3 4 5 6 and 8, 8 is the next largest digit to 7.
3) 按递增顺序对剩余数字排序,并将其追加到末尾
1234567
其产量为981234567
复杂性:
n是位数
步骤1)O(n),因为在最坏的情况下,数字会增加(或保持不变),直到最后一位
步骤2)O(n),因为在最坏的情况下,您必须将该数字与所有n位数字进行比较
步骤3)O(n lg n),因为您必须进行排序,而最好的排序算法是nlgn
所以这个算法在O(nlgn)中运行。这里n是数字中的位数。您的示例2看起来不是更像3791=>3917吗