跳转至

Day31 | Part6

约 90 个字 26 行代码 预计阅读时间 1 分钟

738.单调递增的数字

暴力: TLE → 249/308 cases passed(N/A)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
bool check(int num) { // 看num是否为递增
    if(num < 10) return true;
    int max = 10;
    while(num) {
        int t = num % 10;
        if(max >= t) max = t;
        else return false;
        num /= 10;
    }
    return true;
}
int monotoneIncreasingDigits(int n) {
    for(int i = n; i > 0; i --) 
        if(check(i)) return i;
    return 0;
}

比如98先转为字符串,若出现strNum[i - 1] > strNum[i]的情况(非单调递增)

  • 先让strNum[i - 1]--,然后strNum[i]给为9,整数即89
  • 即小于98的最大的单调递增整数为89
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
int monotoneIncreasingDigits(int n) {
    string str = to_string(n); // int --> string
    int flag = str.size(); // flag用来标记赋值9从哪里开始
    for(int i = str.size() - 1; i > 0; i--)
        if(str[i - 1] > str[i]) // 若不是逆序了
            flag = i, str[i - 1] --;
    for(int i = flag; i < str.size(); i ++) 
        str[i] = '9';
    return stoi(str);
}

968.监控二叉树

贪心和二叉树的一个结合 (难) → 参考

颜色主题调整

快来和我聊天~

可以的话请给我赞和 star喔~    =>  GitHub stars

评论