738. 单调递增的数字
✅做题思路or感想
少有的二刷小障碍
大体思路是:为了让后面的数单调递减,最简单的方法就是把后面小的数直接改成9,让前面的数-1(相当于直接借了一位给后面,借一位给后面是最简单的方法了)
当然这道题还得先要老生常谈的化为字符串,才能对上面的数字实施精准修改
class Solution {
public:
int monotoneIncreasingDigits(int n) {
//先转化成字符串再操作
string str = to_string(n);
//Index代表的是[Index, str.size() - 1]这一段的数都是不符合要求的数,则需要把这个区间都变成9(贪心)
//这里设置str.size()是有门道的
//如果有发生Index的值变化,则无所谓。若没有发生值变化,则区间[str.size(), str.size() - 1]是不存在的,故也不会发生转换9的操作
int Index = str.size();
for (int i = str.size() - 1; i > 0; i--) {
if (str[i - 1] > str[i]) {
Index = i;
//向前一位借1
str[i - 1]--;
}
}
//转化[Index, str.size() - 1]为9
for (int i = Index; i < str.size(); i++) {
str[i] = '9';
}
return stoi(str);
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端