贪心算法|738.单调递增的数字

力扣题目链接

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

一开始还没搞懂题目什么意思。

贪心算法,思路不难想,但代码不好写!LeetCode:738.单调自增的数字_哔哩哔哩_bilibili

去看一下视频就明白了。

 

贪心算法

题目要求小于等于N的最大单调递增的整数,那么拿一个两位的数字来举例。

例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。

这一点如果想清楚了,这道题就好办了。

此时是从前向后遍历还是从后向前遍历呢?

从前向后遍历的话,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。

这么说有点抽象,举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。

那么从后向前遍历,就可以重复利用上次比较得出的结果了,从后向前遍历332的数值变化为:332 -> 329 -> 299

确定了遍历顺序之后,那么此时局部最优就可以推出全局,找不出反例,试试贪心。

 

自己的思路:

1.判断输入的数是否满足增序,若满足输出本身。

2.为方便遍历,将int数字转化为string类型

3.遍历(从后向前),如果前一个大于后一个,进行处理

将前一位减1,flag之后都变成9

4.最后返回,变成int型

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open3D生成规则点云(二)

一、代码 Python import open3d as o3d import numpy as np# 定义正方体的参数 def create_square(x1=0, y1=0, z1=0, side_length=1, resolution=20):vertices = []for i in range(resolution):for j in range(resolution):for k in range(resolution):x = x1 + i * side_le…

2020 年 9 月青少年软编等考 C 语言一级真题解析

目录 T1. 输出整数思路分析 T2. 新冠疫情死亡率思路分析 T3. 有一门课不及格的学生T4. 整数的个数思路分析 T5. 金币 T1. 输出整数 输入四个整数&#xff0c;把输入的第三、第四个整数输出。 时间限制&#xff1a;1 s 内存限制&#xff1a;64 MB 输入 只有一行&#xff0c;共…

python爬虫 - 下载图片

文章目录 1、下载图片示例1&#xff1a;使用 .urlretrieve() 函数2、下载图片示例2 - 使用 open/write 函数3、下载图片示例33.1 使用 open/write 下载3.2 使用 urlretrieve下载 爬虫的本质&#xff1a;模拟对应的App&#xff0c;浏览器访问对应的地址获取到数据 1、下载图片示…

考虑预同步的虚拟同步机T型三电平逆变器并离网MATLAB仿真模型

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 三相 T 型三电平逆变器电路如图所示&#xff0c;逆变器主回路由三个单相 T 型逆变器组成。 直流侧输入电压为 UPV&#xff0c;直流侧中点电位 O 设为零电位&#xff0c;交流侧输出侧是三相三线制连…

高防虚拟主机的重要性

在当今数字化时代&#xff0c;网络安全已经成为企业和个人必须面对的重要议题。随着网络攻击手段的不断升级和多样化&#xff0c;传统的虚拟主机已经难以满足日益增长的安全需求。在这样的背景下&#xff0c;高防虚拟主机应运而生&#xff0c;成为保护网站安全、抵御网络攻击的…

4.双向循环链表的模拟实现

1.双向链表的实现 1.1双向链表节点的结构声明 typedef int LTDataType;typedef struct ListNode {struct ListNode* prev; // 指向该节点的前一个节点struct ListNode* next; // 指向该节点的后一个节点LTDataType data; // 该节点中存储的数据 }LTNode; // 将这…

Linux内核errno-base.h源码分析

上次写过一个博客&#xff0c;主要关于内核错误相关的源码分析&#xff08;链接&#xff09;&#xff0c;最近突然发现上次的分析不完善&#xff0c;因此本次完善相关分析。 Linux内核中经常见到一些返回值&#xff0c;如-12&#xff0c;比如下面是我遇到过的一个截图&#xff…

【Java面试题】MySQL上篇(索引)

文章目录 索引1.索引的分类&#xff1f;2.B树和B树的区别&#xff1f;2.1B树2.2B树 3.为什么使用索引会加快查询&#xff1f;4.创建索引的注意点&#xff1f;5.索引在哪些情况下会失效&#xff1f;6.聚簇索引和非聚簇索引的区别&#xff1f;7.回表查询是什么&#xff1f;8.什么…

阿里云租用服务器GPU配置报价单_1年_一个月_1小时价格表

阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用&#xff0c;阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡&#xff0c;GPU云服务器gn6i可享受3折优惠&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云GPU…

机器学习—概述(一)

什么是机器学习 数据 模型 预测 从历史数据当中获得规律?这些历史数据是怎么的格式? 数据集构成 特征值&#xff0b;目标值 机器学习算法分类 监督学习 目标值:类别一分类问题 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归目标值:连续型的数据一回归问题 线性回…

电脑磁盘空间不足?学会这几招,轻松释放磁盘空间

随着科技的飞速发展&#xff0c;电脑已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;我们都需要依赖电脑来完成。然而&#xff0c;随着电脑使用时间的增长&#xff0c;磁盘空间不足的问题也逐渐浮现。当磁盘空间不足时&#xff0c;不仅会影响电脑…

2023年金融贷款骗局套路之一

源地址&#xff1a;2023年金融贷款骗局套路之一_预防网贷套路_计算机技术网 随着无卡消费的日夜流行&#xff0c;三年疫情出现&#xff0c;钱难寻&#xff0c;难找的尴尬境地&#xff0c;贷款骗局也出现不少。今天我们讲讲最近很流行的贷款骗局之一中的一种贷款骗局。 在平常…

AIoT人工智能物联网之AI 实战

1. jetson-inference 入门 jetson-inference是官方推出的体验套件,提供了三种最常见的AI应用于计算机视觉的类型,imagenet用于 图像辨识 ( Image Recognition )、detectNet用于对象辨识 ( Object Detection )、segNet用于语义分割 可以先使用windows下载 jetson-inference(因…

第40篇:有限状态机<三>

Q&#xff1a;本期我们介绍有限状态机的应用之一&#xff1a;摩尔状态机“1101”序列检测器。 A&#xff1a;当检测到序列1101时&#xff0c;状态机输出为1。定义s_0为初始状态&#xff08;即没有检测到1输入的状态&#xff09;&#xff0c;摩尔状态机的输出仅取决于现态&…

基于SpringBoot+Vue的个性化推荐电商平台(源码+文档+部署+讲解)

一.系统概述 随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;网络技术如今已成为人们生活中不可缺少的一部分&#xff0c;而信息管理系统是通过计算机技术&#xff0c;针对用户需求开发与设计&#xff0c;该技术尤其在各行业领域发挥了巨大的作用&#xff0c;有…

数学建模-Matlab中randperm函数及其双重进阶版

1.randperm函数的用法 &#xff08;1&#xff09;这种用法就是参数只有一个数字&#xff0c;代表的含义就是随机排列之后打印输出&#xff1b; 我们举例的数字是4&#xff0c;就会把1到4这4个数字随机打乱之后随机输出&#xff0c;每次运行结果都不一样 所有可能的情况是n的…

UI自动化测试案例

备注:本文为博主原创文章,未经博主允许禁止转载。如有问题,欢迎指正。 个人笔记(整理不易,有帮助,收藏+点赞+评论,爱你们!!!你的支持是我写作的动力) 笔记目录:笔记本~笔记目录_airtest和selenium那个好用-CSDN博客 个人随笔:工作总结随笔_8、以前工作中都接触过哪…

鸿蒙南向开发:【智能烟感】

样例简介 智能烟感系统通过实时监测环境中烟雾浓度&#xff0c;当烟雾浓度超标时&#xff0c;及时向用户发出警报。在连接网络后&#xff0c;配合数字管家应用&#xff0c;用户可以远程配置智能烟感系统的报警阈值&#xff0c;远程接收智能烟感系统报警信息。实现对危险及时报…

Java区域基层卫生云联his系统源码 医院信息管理系统源码

基于云计算的医疗卫生信息系统(cloud-based healthcare informationsystem&#xff0c;简称“云 HIS”)是基于云计算技术&#xff0c;将医院信息系统、电子病历系统、实验室信息系统、公共卫生等系统横向集成的系统&#xff0c;为医疗机构信息化建设提供标准化、信息化、协同化…

思维题,LeetCode 2923. 找到冠军 I

一、题目 1、题目描述 一场比赛中共有 n 支队伍&#xff0c;按从 0 到 n - 1 编号。 给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid 。对于满足 0 < i, j < n - 1 且 i ! j 的所有 i, j &#xff1a;如果 grid[i][j] 1&#xff0c;那么 i 队比 j 队 强 &a…