代码随想录算法训练营第三十七天|738.单调递增的数字

738.单调递增的数字

题目

给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。

(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)

示例 1:

输入: N = 10
输出: 9
示例 2:

输入: N = 1234
输出: 1234
示例 3:

输入: N = 332
输出: 299
说明: N 是在 [0, 10^9] 范围内的一个整数。

解题思路

  • 把数字改为string,并放到一个string数组中,记录每一位的数字,顺序从左到右。
  • 从右向左比较大小,如果当前数字比左边的数字小,则将左边一位的数字-1,并将当前数字改为9
  • 循环处理,直到数组的最开始。

代码

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. TCP协议是安全的吗?

    2024-03-30 10:28:07       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-30 10:28:07       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-30 10:28:07       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-30 10:28:07       18 阅读

热门阅读

  1. C#多线程编程详细教学

    2024-03-30 10:28:07       21 阅读
  2. c++中缓冲器的使用案例

    2024-03-30 10:28:07       22 阅读
  3. [超细] npm 版本号规范升级流程

    2024-03-30 10:28:07       20 阅读
  4. pnpm 使用

    2024-03-30 10:28:07       19 阅读
  5. OpenCV摄像头和视频处理

    2024-03-30 10:28:07       18 阅读
  6. MySQL-分片规则

    2024-03-30 10:28:07       19 阅读
  7. 蓝桥杯-0玩具

    2024-03-30 10:28:07       19 阅读
  8. PyQt-QtWidgets-QFileDialog

    2024-03-30 10:28:07       19 阅读
  9. ITIL服务管理知识要点梳理

    2024-03-30 10:28:07       21 阅读
  10. 富格林:可信招数揭发防备暗箱陷阱

    2024-03-30 10:28:07       23 阅读
  11. FastAPI+React全栈开发14 FastAPI如何开发REST接口

    2024-03-30 10:28:07       18 阅读