1. 程式人生 > 其它 >力扣-每日一題20201215-738. 單調遞增的數字

力扣-每日一題20201215-738. 單調遞增的數字

技術標籤:力扣刷題貪心演算法c++

難度:中等 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);