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

题目

  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();

        // 从后向前遍历字符串 s
        for (int i = s.size() - 1; i >= 1; i --)
        {
            // 如果前一个字符大于当前字符,说明不满足单调递增的条件
            if (s[i - 1] > s[i]) 
            {
                s[i - 1] --; // 将前一个字符减 1
                flag = i; // 记录需要修改为 '9' 的起始位置
            }
        }

        // 从 flag 开始,将后面的字符全部修改为 '9'
        for (int i = flag; i < s.size(); i ++) s[i] = '9';

        // 将字符串 s 转换回整数并返回
        return stoi(s);
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/980799.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

广域互联方案与技术概述

《广域互联方案与技术概述》属于博主的“广域网”专栏&#xff0c;若想成为HCIE&#xff0c;对于广域网相关的知识需要非常了解&#xff0c;更多关于广域网的内容博主会更新在“广域网”专栏里&#xff0c;请持续关注&#xff01; 一.前言 广域网有着悠久的历史&#xff0c;广…

华硕电脑开启电池保养模式的方法

华硕电脑开启电池保养模式的方法 打开华硕电脑管家(可以桌面左下角搜索MyASUS打开)进入首页(可以不注册&#xff0c;点击跳过&#xff0c;进入首页)&#xff0c;点击电池&#xff1a; 之后在新的页面点击电池保养模式&#xff1a; 开启电池保养模式

一键安装Mysql部署脚本之Linux在线安装Mysql,脚本化自动化执行服务器部署(附执行脚本下载)

相关链接 一键安装Redis部署脚本之Linux在线安装Redis一键安装Mysql部署脚本之Linux在线安装Mysql一键安装JAVA部署脚本之Linux在线安装JDK一键安装Nginx部署脚本之Linux在线安装NginxNavicat最新版(17)详细安装教程Xshell客户端免费版无需注册XFtp客户端免费版无需注册 前言…

JavaScript阻塞

JS对DOM树的阻塞 DOM的定义&#xff1a;文档对象模型&#xff0c;是JS操作网页的接口&#xff0c;指代页面中的元素。DOM树的定义&#xff1a;是指元素与元素之间的关系&#xff0c;可以指页面的结构。 JS在执行时会阻塞DOM树的结构&#xff0c;此时DOM树是不完整的&#xff0…

Mysql进阶(一)

1. 在ubuntu下安装MySQL数据库 1.1 查看操作系统版本 操作系统版本为Ubuntu22.04. LTS lsb_release -a; 安装成功之后&#xff0c;查看mysql的状态 1.2 查看mysql的状态 1.3 登录mysql mysql -uroot -p; 1.4 退出mysql quit&#xff1b; exit&#xff1b; 2. mysql 程序的…

安卓基础组件Looper - 03 java层面的剖析

文章目录 workflow工作线程 准备Looper创建LooperActivity主线程其他情况 Looper.prepare()大体流程java申请Loopernew LooperMessageQueue初始化 nativejniNativeMessageQueue Looper.loop()大体流程java获取Looper获取msg&#xff0c;处理msgLooper.loop()Looper.loopOnce &a…

DataStructsRECITE

1、绪论 什么是数据结构&#xff1f; 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构包括三个方面&#xff1a;逻辑结构、存储结构、数据的运算。 逻辑结构有&#xff1a; 集合&#xff08;数据元素除属于“同一个集合”外&#xff0c;别无其他关系…

自然语言处理:朴素贝叶斯

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。按照博主的分享规划&#xff0c;本次分享的核心主题本应是自然语言处理中的文本分类。然而&#xff0c;在对分享内容进行细致梳理时&#xff0c;我察觉到其中包含几个至关重要的知识点&#xff0c;即朴素…

【542. 01 矩阵 中等】

题目&#xff1a; 给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1&#xff1a; 输入&#xff1a;mat [[0,0,0],[0,1,0],[0,0,0]] 输出…

深入浅出:Spring AI 集成 DeepSeek 构建智能应用

Spring AI 作为 Java 生态中备受瞩目的 AI 应用开发框架&#xff0c;凭借其简洁的 API 设计和强大的功能&#xff0c;为开发者提供了构建智能应用的强大工具。与此同时&#xff0c;DeepSeek 作为领先的 AI 模型服务提供商&#xff0c;在自然语言处理、计算机视觉等领域展现了卓…

Vue 系列之:基础知识

什么是 MVVM MVVM&#xff08;Model-View-ViewModel&#xff09;一种软件设计模式&#xff0c;旨在将应用程序的数据模型&#xff08;Model&#xff09;与视图层&#xff08;View&#xff09;分离&#xff0c;并通过 ViewModel 来实现它们之间的通信。降低了代码的耦合度。 M…

辛格迪客户案例 | 鼎康生物电子合约系统(eSign)项目

01 案例企业 鼎康(武汉)生物医药有限公司于2013年06月19日成立 &#xff0c;是一家总部位于湖北武汉的CDMO公司&#xff0c;坚持以客户为中心&#xff0c;以及时、经济和高质量为服务导向。鼎康生物拥有先进的150,000平方英尺的生产厂房&#xff0c;生产设施位于中国武汉的Bio…

QT-对象树

思维导图 写1个Widget窗口&#xff0c;窗口里面放1个按钮&#xff0c;按钮随便叫什么 创建2个Widget对象 Widget w1,w2 w1.show() w2不管 要求&#xff1a;点击 w1.btn ,w1隐藏&#xff0c;w2显示 点击 w2.btn ,w2隐藏&#xff0c;w1 显示 #include <QApplication> #inc…

【笔记】用大预言模型构建专家系统

最近闲庭漫步&#xff0c;赏一赏各个AI大语言模型芳容。也趁着时间&#xff0c;把倪海夏一家的天纪和人纪视频看完了&#xff0c;感谢倪先生和现在网络的知识分享&#xff0c;受益匪浅。但是发现看完&#xff0c;很多不错的知识都不能记录在脑子里&#xff0c;那用的时候岂不是…

0086.基于springboot+vue的企业OA管理系统+论文

一、系统说明 基于springbootvue的企业OA管理系统,系统功能齐全, 代码简洁易懂&#xff0c;适合小白学编程。 2600套项目源码&#xff0c;总有适合您的&#xff01; 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍…

数据集笔记:新加坡停车费

data.gov.sg 该数据集包含 新加坡各停车场的停车费&#xff0c;具体信息包括&#xff1a; 停车场名称&#xff08;Carpark&#xff09;&#xff1a;如 Toa Payoh Lorong 8、Ang Mo Kio Hub、Bras Basah Complex 等。停车区域类别&#xff08;Category&#xff09;&#xff1a…

初阶数据结构(C语言实现)——3顺序表和链表(2)

2.3 数组相关面试题 原地移除数组中所有的元素val&#xff0c;要求时间复杂度为O(N)&#xff0c;空间复杂度为O(1)。OJ链接 力扣OJ链接-移除元素删除排序数组中的重复项。力扣OJ链接-删除有序数组中的重复项合并两个有序数组。力扣OJ链接-合并两个有序数组 2.3.1 移除元素 1…

Java实现pdf文件压缩(aspose-pdf实现压缩、itextpdf去除aspose-pdf版权水印)

Java实现pdf文件压缩 时间换空间&#xff0c;实现pdf文件无损压缩。 1、依赖准备 市面上操作pdf文件的组件有spire.pdf.free、itextpdf、openpdf、pdfbox等&#xff0c;它们各有千秋。我们主要完成的场景为压缩&#xff0c;减少文件大小去优化存储、传输等。 在这里选取的组件…

基于Spring Boot的产业园区智慧公寓管理系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

7. 从网络获取数据

一、课程笔记 1.1 订阅网络状态变化 1.1.1 网络状态概述 1.1.2 获取网络信息 &#xff08;1&#xff09;创建网络对象 &#xff08;2&#xff09;createNetConnection接口的具体使用 &#xff08;3&#xff09;获取默认激活网络及其能力 1.1.3 订阅网络状态 在获取网络状态后…