您现在的位置是:首页 >其他 >代码随想录算法训练营第三十七天 | 两道难题,很有意义网站首页其他

代码随想录算法训练营第三十七天 | 两道难题,很有意义

Yirschen 2024-06-14 17:20:26
简介代码随想录算法训练营第三十七天 | 两道难题,很有意义

738.单调递增的数字

文档讲解:代码随想录 (programmercarl.com)

视频讲解:贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili

状态:不会做。

我的思路(感觉文档思路不好用)

对于数字(eg. 12534),若某一位开始后面的不递增(eg. 534),说明该位前面的数字递增(eg. 12),那么,将当前位减一(5-1=4),后面的位都改为9即可。所以12534对应的结果为12499。

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string strNum = to_string(n);   //数字转为string
        int flag = strNum.size();   //记录【减一位置】的后一位
        
        for(int i = strNum.size() - 1; i > 0; i--){ //从后向前遍历
            if(strNum[i - 1] > strNum[i]){  //i-1为【减一位置】
                flag = i;
                strNum[i - 1]--;
            }
        }

        for(int i = flag; i < strNum.size(); i++){  //把【减一位置】后面的位置都改为9
            strNum[i] = '9';
        }
        return stoi(strNum);
    }
};

968.监控二叉树

文档讲解:代码随想录 (programmercarl.com)

视频讲解:贪心算法,二叉树与贪心的结合,有点难… LeetCode:968.监督二叉树_哔哩哔哩_bilibili

状态:太难了,要对二叉树有很深的理解。建议看视频。

思路

先看视频再看文档。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。