本文主要是介绍代码随想录 Day37 738.单调递增的数字 968.监控二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
738.单调递增的数字
class Solution {
public:int monotoneIncreasingDigits(int N) {string strNum = to_string(N);// flag用来标记赋值9从哪里开始// 设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行int flag = strNum.size();for (int i = strNum.size() - 1; i > 0; i--) {if (strNum[i - 1] > strNum[i] ) {flag = i;strNum[i - 1]--;}}for (int i = flag; i < strNum.size(); i++) {strNum[i] = '9';}return stoi(strNum);}
};
思路:
1. 本题的核心思想是在于当元素不够减的时候就会变成9,这个需要通过多个例子就会发现。并且会发现需要进行从后向前的遍历。
2.之所以设置flag标志位是因为1000这种情况就需要再比较1和0的时候才能知道需要将0变成9.
问题:
1. 本题可以通过将int类型数字变为string类型的数字方便对于每一位进行操作,用到函数to_string()和stoi()函数,同时记得对于每一位的元素需要对于元素的值进行改变的时候,需要加' '因为这个时候每一位上都是一个char类型。
968.监控二叉树
二刷在做
这篇关于代码随想录 Day37 738.单调递增的数字 968.监控二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!