Day37| Leetcode 738. 单调递增的数字

今天就一个题目,做完吃完饭抓紧做六级试题。

Leetcode 738. 单调递增的数字

题目链接 738 单调递增的数字

本题目思路还是比较巧妙的,对于98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。剩下还需要几个主要的点,在注释中会说明:

class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        string strNum = to_string(n);//这里是将int类型转化为字符串类型
        int flag = strNum.size();//设置为这个默认值,为了防止第二个for循环在flag没有被赋值的情况下执行,太强了
        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

贪心小总结:

遇到贪心的题目做法就是怎么将利益做到最大化,从局部到整体利益最大化的一个过程

今天必须拿下六级

你可能感兴趣的:(leetcode,算法,职场和发展)