本文主要是介绍leetcode738:单调递增的数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单调递增的数字
当且仅当每个相邻位数上的数字 x
和 y
满足 x <= y
时,我们称这个整数是单调递增的。
给定一个整数 n
,返回 小于或等于 n
的最大数字,且数字呈 单调递增 。
public int monotoneIncreasingDigits(int n) {if(n<10){return n;}int len = String.valueOf(n).length();int[] res = new int[len];int preN = n;boolean flag = true;while(n!=0){int tmp = n%10;res[len-1] = tmp;if(len < res.length && res[len-1] > res[len]){flag = false;}n = n/10;len--;}if(flag){return preN;}for (int i = 0; i < res.length; i++) {if(res[i] > res[i+1]){while(i > 0 && res[i] <= res[i-1]){i--;}res[i]--;for (int i1 = i+1; i1 < res.length; i1++) {res[i1] = 9;}break;}}int resNum = 0;for (int i = res.length-1; i >= 0; i--) {resNum += res[i]*Math.pow(10,res.length-1-i);}return resNum;}
贪心,找到符合单调递增序列的后一个数字-1,后面的全部设置为9
这篇关于leetcode738:单调递增的数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!