力扣-每日一題20201215-738. 單調遞增的數字
阿新 • • 發佈:2020-12-16
難度:中等 738. 單調遞增的數字
思路
這是一道貪心演算法,要結果儘可能的大,我們需要從數的最高位開始確定,也就是從左到右。
如果這a位數字小於右側的陣列,則符合要求;如果大於右側的數字,就將這一位減1,並將後面的數字都設定為9,這樣就保證了最高位是最大的。
程式碼
class Solution {
public:
int monotoneIncreasingDigits(int N) {
string strN = to_string(N);
int i = 1;
while (i < strN.length() && strN[i - 1] <= strN[i]) {
i += 1;
}
if (i < strN.length()) {
while (i > 0 && strN[i - 1] > strN[i]) {
strN[i - 1] -= 1;
i -= 1;
}
for (i += 1; i < strN.length (); ++i) {
strN[i] = '9';
}
}
return stoi(strN);
}
};
知識點
int轉為string : string strN = to_string(N);