讨论/题目交流/求一道算法题:给出一个数字,找出比它大的的最小数字;/
求一道算法题:给出一个数字,找出比它大的的最小数字;

给定一个数字,以它的各位为元素,组合出下一个比它大的最小数字;
比如1234,输出1243;
比如1243,输出1324;

共 3 个回复

分这几个步骤:

  • 逆序找出大于前一位数字的索引,比如12354,5大于3,以3为分界
  • 3以前的部分不动
  • 将3和3后面部分中大于3的最小数字交换,即3和4交换,现在结果为12453
  • 然后对先前3后面的部分,反转。结果为12435

如果哪里不对,还望指出~

1

提供一个思路。把字符串分位1234->[1,2,3,4]
其实就是把最大值的前一位替换成比他大的最小值,一个简单递归
比如44231,如果在第一位出现了最大值并且没有比他大的值,返回
4231同理
231找到3最大,前一位是2,所以是321,接下来找21
21找到2最大返回剩下一位 递归结束。

1

LC31改一下就行