5749. 邻位交换的最小次数
难度中等0
给你一个表示大整数的字符串 num
,和一个整数 k
。
如果某个整数是 num
中各位数字的一个 排列 且它的 值大于 num
,则称这个整数为 妙数 。可能存在很多妙数,但是只需要关注 值最小 的那些。
例如,
1
num = "5489355142"
:
- 第 1 个最小妙数是
"5489355214"
- 第 2 个最小妙数是
"5489355241"
- 第 3 个最小妙数是
"5489355412"
- 第 4 个最小妙数是
"5489355421"
返回要得到第 k
个 最小妙数 需要对 num
执行的 相邻位数字交换的最小次数 。
测试用例是按存在第 k
个最小妙数而生成的。
示例 1:
1 | 输入:num = "5489355142", k = 4 |
示例 2:
1 | 输入:num = "11112", k = 4 |
示例 3:
1 | 输入:num = "00123", k = 1 |
提示:
2 <= num.length <= 1000
1 <= k <= 1000
num
仅由数字组成
生成下一个全排列
1 | class Solution { |
生成下一个全排列
1 |
|
原始版本链接
1 | public void nextPermutation(int[] num) { |
参考文献