本文主要是介绍738.单调递增的数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
738.单调递增的数字
当且仅当每个相邻位数上的数字 x
和 y
满足 x <= y
时,我们称这个整数是单调递增的。
给定一个整数 n
,返回 小于或等于 n
的最大数字,且数字呈 单调递增 。
示例 1:
输入: n = 10
输出: 9
示例 2:
输入: n = 1234
输出: 1234
示例 3:
输入: n = 332
输出: 299
思路
比较前后两个位上的数字大小即可,需要注意的点是取数字(我这里做法是转换为string然后按位取出减去‘0’的ascall码),还有比较后组成新的数字方式以及回撤顺序进行比较的方式。
代码
public int monotoneIncreasingDigits(int n) {int len=String.valueOf(n).length();int pre= ((int) String.valueOf(n).charAt(0))-48;int ans=pre;int i=1;while (i<len){int temp= ((int) String.valueOf(n).charAt(i))-48;if (pre>temp){n= (int) ((ans-1)*Math.pow(10,len-i)+Math.pow(10,len-i)-1);if (i>1){i=i-1;pre=((int) String.valueOf(n).charAt(i-1))-48;ans=ans/10;continue;}else return n;}else ans=ans*10+temp;i++;pre=temp;}return n;}
这篇关于738.单调递增的数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!