代码随想录算法训练营第三十七天| 贪心算法

Posted by Zhuoqun on February 19, 2023

738.单调递增的数字

自己想了个方法,但是不对。照着Carl的答案写出来的。

这里首先确认的是应该从右往左遍历,因为这样的话遇到前面的数比当前大的话,就可以借位了。我考虑到这点了,但是没想透。然后找到应该是从哪一位开始把数写成9。只记录最靠左应该改为9的位置就行。

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string n_toString = to_string(n);
        int flag = n_toString.length();

        for(int i=n_toString.length()-1; i>0; i--){
            if(n_toString[i-1] > n_toString[i]){
                flag = i;
                n_toString[i-1]--;
            }
        }
        for(int i=flag; i<n_toString.length(); i++){
            n_toString[i] = '9';
        }
        return stoi(n_toString);
    }
};

714. 买卖股票的最佳时机含手续费

968.监控二叉树