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

找到给定数字下一个较大的字谜的有效算法是什么

示例:

  • 输入:7813->输出:7831
  • 输入:3791->输出:3917
  • 输入:4321->输出:(无)

  • 基本上是从右向左移动数字。一旦你找到一个递减的数字,你就停止。将该数字与前面的所有数字进行比较。将其替换为下一个最高数字,然后按递增顺序对其余数字进行排序。例如:

    以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吗