《小緹娜的奇幻之地》利爪霜戰士加點參考
阿新 • • 發佈:2022-03-30
✅做題思路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); } };