每日算法 - 大于当前数字的最小数
一、题目描述
一个超级长的数字(有几十位那种),允许进行任意多次的任意两位交换,
问你能得到的比他大的最小的数字是多少。
二、ruby方案
2.1 思路
思路:举例理解
比999991324大的最小的整数是999991342,是交换4和2得到
比999991321大的最小的整数是999992113,是交换2和1,然后将2之后数字排序
总结上述可以看出一些规律,以91321为例(92113)
从右往左
1、首先最左位1,向右查找比1小的第一个值,没找到,接着判断次左位2
2、向右查找到比2小的第一个值是1,二者交换
3、将2之后的值排序为最小值
2.2 代码
Show Disqus Comments