达到第k个最小值的最小相邻交换

eyh26e7m  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(316)

因此,问题是:
您将获得一个字符串num,表示一个大整数和一个整数k。
若某个整数是num中数字的排列,且其值大于num,我们称之为奇妙的整数。可以有许多奇妙的整数。然而,我们只关心最小的价值。
例如,当num=“5489355142”:

The 1st smallest wonderful integer is "5489355214".
The 2nd smallest wonderful integer is "5489355241".
The 3rd smallest wonderful integer is "5489355412".
The 4th smallest wonderful integer is "5489355421".

返回需要应用于num以达到第k个最小整数的最小相邻数字交换数。
测试是以这样一种方式生成的,即存在第k个最小的整数。
直接开出信用证。
但我的问题是,在前面提到的例子中,我们有一个数组 [1,1,1,1,2]. 如果我们找到第k个下一个更大的排列,我们将得到 [2,1,1,1,1]. 所以,如果我们只做一次交换,即交换2和前1,我们将得到所需的数组。为什么答案是4?
提前谢谢。

muk1a3rh

muk1a3rh1#

您只能进行相邻交换。你不能用第一个1交换2。你必须用第四个1交换,然后是第三个1,依此类推,这将导致4次交换

相关问题