旅游网站建设总结报告,专业设计企业网站,赣州工作室,张店网站建738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x y 时#xff0c;我们称这个整数是单调递增的。
给定一个整数 n #xff0c;返回 小于或等于 n 的最大数字#xff0c;且数字呈 单调递增 。 示例 1:
输入: n 10
输出: 9示例 2:
输入: n 1234
输出…738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x y 时我们称这个整数是单调递增的。
给定一个整数 n 返回 小于或等于 n 的最大数字且数字呈 单调递增 。 示例 1:
输入: n 10
输出: 9示例 2:
输入: n 1234
输出: 1234示例 3:
输入: n 332
输出: 299提示:
0 n 109 //暴力法分解数字---------超时
class Solution {static bool check(int x){int maxnum10;while(x){int tx%10;if(maxnumt){maxnumt;}else{return false;}x/10;}return true;}
public:int monotoneIncreasingDigits(int n) {for(int in;i0;i--){if(check(i)){return i;}}return 0;}
}; class Solution {
public:int monotoneIncreasingDigits(int n) {//第一步将整数转成字符串类似于高精度算法string strto_string(n);//定义一个标志符flagbool flagfalse;//如果高位大于次高位直接高位减一次高位变9后面都变9//例如45357--44999//但是例如332--329,顾后不顾前随意需要从后往前在遍历一遍for(int i1;istr.size();i){//if(str[i-1]str[i]flagfalse){str[i-1]--;flagtrue;}if(flag){str[i]9;}}//从后往前在遍历一遍//还是如果高位大于次高位直接高位减一次高位变9后面都变9for(int istr.size()-1;i0;i--){if(str[i-1]str[i]){str[i]9;//不能一直减一剪成负数了if(str[i-1]!0){str[i-1]--;}}}//stoi将字符串转整数return stoi(str);}
};