代码随想录算法训练营第三十七天|738.单调递增的数字 、968.监控二叉树
单调递增的数字
738.单调递增的数字
文章讲解:https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html
题目链接:https://leetcode.cn/problems/monotone-increasing-digits/
视频讲解:https://www.bilibili.com/video/BV1Kv4y1x7tP/
自己看到题目的第一想法
遍历字符,从后往前遍历,用后的值和前的值比较,尽量取后的值一样的,取不到一样的就取最大的。(后面发现题目没审清楚,比如232不是变成222而是变成229)。
看完代码随想录之后的想法
遍历数字,发现前一个大于后一个的话就把前一个减一后一个变成九。
但是这里要注意从前遍历还是从后面开始遍历。
从前往后遍历的话如332的话,就会变回329这种是正确的。
自己实现过程中遇到哪些困难
整体链路理解都差不多,但是自己写的时候差点意思,主要还是数字转字符串又转字符串数组的,没通过。
整体思路:
- 使用传参 + N + “”,把数字转成字符串就再使用split(“”)方法截断成字符串数组。
- 初始化flag位置为数组的length位置
- 处理判断逻辑,倒序遍历,发现前面的比后面的大,前面的减1,再将flag置为i。
- 遍历字符串数组,从flag开始到最后,将遍历过的字符串都变成“9”。
监控二叉树
968.监控二叉树
文章讲解:https://programmercarl.com/0968.%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html
题目链接:https://leetcode.cn/problems/binary-tree-cameras/
视频讲解:https://www.bilibili.com/video/BV1SA411U75i/
自己看到题目的第一想法
监控二叉树留着二刷