Algorithm 关于下一个置换算法

Algorithm 关于下一个置换算法,algorithm,Algorithm,嗨,我现在正在编写下一个排列。我的程序通过了171个案例,但在案例中停止了 Input: [2,3,1] Output: [1,2,3] Expected: [3,1,2] 我不明白为什么预期的结果是[3,1,2] 下一个排列的过程是(从另一个线程复制): 从头到尾迭代,当我们发现一个元素小于前面遇到的元素时停止(假设它是num[i],num[i]应该小于或等于num[i+1],这是一个值) 现在从a迭代到最后。找到大于a的最小元素b 开关a和b 将线段从端点反转到a后的端点 对于[2,3

嗨,我现在正在编写下一个排列。我的程序通过了171个案例,但在案例中停止了

Input: [2,3,1] 
Output: [1,2,3] 
Expected: [3,1,2]
我不明白为什么预期的结果是[3,1,2]

下一个排列的过程是(从另一个线程复制):

  • 从头到尾迭代,当我们发现一个元素小于前面遇到的元素时停止(假设它是num[i],num[i]应该小于或等于num[i+1],这是一个值)

  • 现在从a迭代到最后。找到大于a的最小元素b

  • 开关a和b

  • 将线段从端点反转到a后的端点

  • 对于[2,3,1]的情况,我认为a=2,b=1,在切换a和b之后,我们得到了[1,3,2]。然后,倒转线段,我们得到[1,2,3]


    我知道我错了,但我不知道哪里错了。我所做的一切都是按照程序进行的。

    大于a的最小元素b,这里是3