每日算法 - 大于当前数字的最小数

2019/01/01

每日算法 - 大于当前数字的最小数

一、题目描述

一个超级长的数字(有几十位那种),允许进行任意多次的任意两位交换,

问你能得到的比他大的最小的数字是多少。

二、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

Post Directory