【练习】【贪心】力扣738. 单调递增的数字

devtools/2025/3/4 18:25:09/

题目

  1. 单调递增的数字

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

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

示例 1:

输入: n = 10

输出: 9

示例 2:

输入: n = 1234

输出: 1234

示例 3:

输入: n = 332

输出: 299

来源:力扣738. 单调递增的数字


思路(注意事项)

思路就是从后往前遍历,将遍历到的元素s[i]与该元素的前一个元素s[i - 1]比较,如果前一个元素大于该元素则将前一个元素 - 1,同时将该元素s[i]置为9,依次类推。实际写代码中,用一个flag位标记需要修改为9的所有位置。


纯代码

class Solution {
public:int monotoneIncreasingDigits(int n) {string s = to_string(n);int flag = s.size();for (int i = s.size() - 1; i >= 1; i --){if (s[i - 1] > s[i]) {s[i - 1] --;flag = i;}}for (int i = flag; i < s.size(); i ++) s[i] = '9';return stoi(s);}
};

题解(加注释)

class Solution {
public:int monotoneIncreasingDigits(int n) {// 将整数 n 转换为字符串 s,方便逐字符处理string s = to_string(n);// flag 用于记录需要修改为 '9' 的起始位置int flag = s.size();// 从后向前遍历字符串 sfor (int i = s.size() - 1; i >= 1; i --){// 如果前一个字符大于当前字符,说明不满足单调递增的条件if (s[i - 1] > s[i]) {s[i - 1] --; // 将前一个字符减 1flag = i; // 记录需要修改为 '9' 的起始位置}}// 从 flag 开始,将后面的字符全部修改为 '9'for (int i = flag; i < s.size(); i ++) s[i] = '9';// 将字符串 s 转换回整数并返回return stoi(s);}
};

http://www.ppmy.cn/devtools/164531.html

相关文章

【每日八股】MySQL篇(七):日志(上)

目录 MySQL 三种日志&#xff1f;二进制日志&#xff08;Binlog&#xff09;重做日志&#xff08;Redo Log&#xff09;回滚日志&#xff08;Undo Log&#xff09;其它辅助日志总结 redo log 与 undo log 的区别&#xff1f;undo log 是如何实现 MVCC 的&#xff1f;redo log 与…

Python 创建一个能够筛选文件的PDF合并工具

合并多个 PDF 文件。这款 PDF 合并工具允许用户浏览文件夹、选择 PDF 文件&#xff0c;并将其合并为一个新的 PDF 文件。我们将详细分析代码结构和如何一步步实现每个功能。 C:\pythoncode\new\PDFFileInFolderMergeToNewPDFFile.py 全部代码 import os import wx import PyP…

互联网时代如何保证数字足迹的安全,以防个人信息泄露?

用户在网络上所做的几乎所有事情&#xff0c;包括浏览、社交媒体活动、搜索查询、在线订阅&#xff0c;甚至购物&#xff0c;都会留下一条数据线索&#xff0c;这些数据可用于创建用户在线身份的详细档案。如果这些信息暴露&#xff0c;恶意行为者可能会利用它们将用户置于各种…

Grafana接入Zabbix数据源

1. 对接 Zabbix 1.1 安装 Zabbix 插件 在线安装&#xff1a; 1.2 配置 Zabbix 数据源 点击 Configuration > Data Sources > Add data source。选择 Zabbix&#xff0c;填写&#xff1a; URL&#xff1a;http://<zabbix-server>/api_jsonrpc.phpUsername&#x…

C# dll文件的反编译获取源码

目录 前言操作流程结论 前言 上一篇文章介绍了将C# cs类文件加密为dll文件&#xff0c;在此给大家写一篇关于反编译dll文件的文章。 操作流程 首先&#xff0c;我们需要准备一个C#反编译工具&#xff0c;我这里用的是免费的软件JetBrains dotPeek&#xff0c;类似的有很多&am…

Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建

Windows 环境下 Nginx、PHP 与 ThinkPHP 开发环境搭建 目录 安装 Nginx 和 PHP配置 Nginx配置 PHP启动服务ThinkPHP 配置常见问题排查 1. 安装 Nginx 和 PHP 安装 Nginx 访问 Nginx 官网 下载 Windows 版本解压到指定目录&#xff0c;如 C:\nginx 安装 PHP 访问 PHP 官网…

C# 矩形面积和周长的程序(Program for Area And Perimeter Of Rectangle)

矩形是平面上的平面图形。 它有四条边和四个相等的角&#xff0c;每个角都是 90 度。 矩形的四条边并不像正方形那样长度相等&#xff0c;而是彼此相对的边长度相等。 矩形的两条对角线长度相等。 例子&#xff1a; 输入&#xff1a;4 5 输出&#xff1a;面积 20 …

HttpServletRequest 和 HttpServletResponse 不同JDK版本的引入

java中&#xff0c;可能会用到JWT令牌校验&#xff0c; 这时&#xff0c;大概率会用到 HttpServletRequest&#xff0c;和 HttpServletResponse。 若为 JDK8&#xff0c;SpringBoot 2.7.3 的版本则引入&#xff1a; import javax.servlet.http.HttpServletRequest; import ja…