贪心算法Day06

#738.单调递增的数字

力扣题目链接(opens new window)

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

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

示例 1:

  • 输入: N = 10
  • 输出: 9

示例 2:

  • 输入: N = 1234
  • 输出: 1234

示例 3:

  • 输入: N = 332
  • 输出: 299

说明: N 是在 [0, 10^9] 范围内的一个整数。

看到题目的第一想法

        没思路,不清楚数字要怎么处理

看到代码随想录之后的想法

        卡哥做法,使用string来处理数字

        从后往前,看是否递增,找到字符串中第一个递减的位置,把前一个-1 ,后面的全都变成9

         

自己实现过程中遇到的困难


    从后往前遍历,如果发现str[i]<str[i-1] 则str[i]--,str[i-1]之后的都赋值为9

   使用字符数组处理起来很方便

    记录第一个下标,把后面都置为9

class Solution {/*public int monotoneIncreasingDigits(int n) {//如果这个数字单调递增的话我们就返回自己//如果不单调递增,if(isValid(n)){return n;}}boolean isValid(int n){int s=n;while(s!=0){if((s/10)%10<=s%10){s=s/10;}else{return false;}}return true;}*///卡哥做法 把数字转成string来处理//要清楚,要找到最大单调递增的数字,其实就是递减开始第一个数字-1 后面的全为9 比如32->3-1=2 ->29//从后往前遍历,如果发现str[i]<str[i-1] 则str[i]--,str[i-1]之后的都赋值为9/*public int monotoneIncreasingDigits(int n) {StringBuilder s = new StringBuilder(n);//从后往前遍历若为递减则记录递减最近的地方int flag = s.length();for(int i=s.length()-1;i>0;i--){if(s.charAt(i-1)>s.charAt(i)){//前一个-- 后续都为9char t = (char)(s.charAt(i-1)-'1');s.setCharAt(i-1,t);flag=i;}}for(int i=flag;i<s.length();i++){//把后续都置为9s.setCharAt(i,'9');}return Integer.valueOf(s.toString());}*/public int monotoneIncreasingDigits(int n) {String s = n+"";char[] c = s.toCharArray();//从后往前遍历若为递减则记录递减最近的地方int flag = c.length;for(int i=c.length-1;i>0;i--){if(c[i-1]>c[i]){//前一个-- 后续都为9c[i-1]--;flag=i;}}for(int i=flag;i<c.length;i++){//把后续都置为9c[i]='9';}return Integer.parseInt(String.valueOf(c));}
}

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

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

相关文章

【Redis】Redis面试热点

Redis 集群有哪些方案&#xff1f; 主从复制&#xff1a;解决了高并发问题 哨兵模式&#xff1a;解决了高并发&#xff0c;高可用问题 分片集群&#xff1a;解决了海量数据存储&#xff0c;高并发写的问题 主从复制 图示&#xff1a; 主从复制&#xff1a;单节点 Redis 并发…

NPN PNP SS8050 SS8550 S8050

SS8050的使用及引脚判断方法 今天讲的是NPN型三极管SS8050&#xff0c;主要分为以下几个方面&#xff1a; 一、前言 二、SS8050简介 三、NPN三极管与PNP三极管 四、三极管管脚识别方法 五、不拆卸三极管判断其好坏 六、S8050和SS8050的区别 七、三极管与MOS管的区别 八…

nginx基础面试题以及配置文件解析和命令控制

目录 1、nginx是什么 2、nginx的特点 3、为什么中国大陆有&#xff1a;百度、京东、新浪、网易、腾讯、淘宝等这么多用户使用nginx 4、nginx 的内部技术架构 上一期我们配置安装了nginx接着讲一下nginx配置文件的解析和nginx 命令控制 感谢观看&#xff01;希望能够帮助到…

mapper向mapper.xml传参中文时的乱码问题

1.起因&#xff1a; 在idea中进行模糊查询传参时&#xff0c;发现在idea中查中文查不出记录&#xff0c;在navicate中可以查出来。 2.猜测&#xff1a; 1.idea中的编码问题导致的乱码。 2.idea和navicate的编码一致性导致的乱码。 3.mapper向mapper.xml传参后出现乱码。 3.解…

Qt之数据转换与处理

从串口读取到的QByteAray数据一般需要进行提取和解析&#xff0c;此时就需要将QByteArray数拒转换为各种类型的数据。常用的转换包括&#xff1a; &#xff08;1&#xff09; 转为Hex&#xff0c;用于显示十六进制&#xff0c;这点在调试时特别有用&#xff0c;因为大多HEX码是…

【Vue技巧】Vue2和Vue3组件上使用v-model的实现原理

ChatGPT4.0国内站点&#xff0c;支持GPT4 Vision 视觉模型&#xff1a;海鲸AI 在Vue中&#xff0c;v-model 是一个语法糖&#xff0c;用于在输入框、选择框等表单元素上创建双向数据绑定。当你在自定义组件中实现 v-model 功能时&#xff0c;你需要理解它背后的原理&#xff1a…

DFA算法实战-敏感词过滤

前言 这里的项目实战, 我们使用的是 SpringBoot2.xJDK1.8搭建的,核心思想是借助了Hutool工具类的 WordTree。想了解更多DFA算法的实现可以参考DFA算法的实现 实战案例 1. 引入Hutool的工具类 <dependency><groupId>cn.hutool</groupId><artifactId>…

Python 基础【八】--数据类型-字典【2024.1.11】

1.定义 字典的内容在花括号 {} 内&#xff0c;键-值&#xff08;key-value&#xff09;之间用冒号 : 分隔&#xff0c;键值对之间用逗号 , 分隔&#xff0c;比如创建字典 &#xff0c;如下所示&#xff1a; d{name:小明,age:18}# 使用 dict 函数&#xff1a;强转 # 方式一&am…

mysql group by 之后要把名字放到一个字段里边

分组后的其他字段去重 count(DISTINCT(product)) num_sold,分组后数据存放到一个字段 &#xff08;带着排序&#xff0c;在保存到一个字段&#xff09; group_concat(distinct product order by product separator ‘,’) select sell_date,count(DISTINCT(product)) num_so…

PX4开源项目中遇到的问题

开源项目 kaiyuanxiangmkmonemati/PX4-ROS2-Gazebo-YOLOv8: Aerial Object Detection using a Drone with PX4 Autopilot and ROS 2. PX4 SITL and Gazebo Garden used for Simulation. YOLOv8 used for Object Detection. (github.com) 首先创建python虚拟环境&#xff0c;克…

【一文详解】知识分享:(ASP.Net Core基础学习及快速入门)

背景知识 相关术语 .Net .NET是微软的一个开发平台&#xff0c;这个平台的一大特点就是跨语言性&#xff0c;不管是什么语言&#xff0c;c、c、c#、F#、J#、vb等语言都可以用这个平台合作开发&#xff1b; .NET&#xff0c;它是微软创建的一个用于构建多种不同类型的应用程…

python——combinations()函数详解

combinations() 函数位于 Python 的 itertools 模块中&#xff0c;用于生成一个可迭代对象&#xff0c;包含输入集合中所有长度为 r 的组合。 定义&#xff1a; combinations(iterable, r) 函数接受一个可迭代对象 iterable 和一个整数 r&#xff0c;返回一个包含所有长度为 r…

书生·浦语大模型实战营-学习笔记2

目录 轻松玩转书生浦语大模型趣味Demo1. 大模型及 InternLM 模型介绍2. InternLM-Chat-7B 智能対话 Demo3. Lagent 智能体工具调用 Demo4. 浦语•灵笔图文创作理解 Demo5. 通用环境配置实验记录6. 课后作业 视频地址&#xff1a; (2)轻松玩转书生浦语大模型趣味Demo 文档教程&a…

xtu oj 1237 孪生素数

题目描述 如果n和n2都是素数&#xff0c;我们称其为孪生素数&#xff0c;比如3和5&#xff0c;5和7都是孪生素数。 给你一个区间[a,b],请问期间有多少对孪生素数&#xff1f; 输入 第一行是一个整数K(K≤ 10000)&#xff0c;表示样例的个数。 以后每行一个样例&#xff0c;为两…

C#用string.Replace方法批量替换某一类字符串

目录 一、关于字符串及其操作常识 二、String.Replace 方法 1.重载 2.Replace(Char, Char) 3.Replace(String, String) &#xff08;1&#xff09;实例&#xff1a; &#xff08;2&#xff09;生成结果&#xff1a; 4.Replace(String, String, StringComparison) 5.…

python堆排序

堆排序是一种基于二叉堆数据结构的排序算法。它将待排序的数组看作是一个完全二叉树&#xff0c;并利用堆的性质进行排序。 堆排序的基本思想是先将待排序的数组构建成一个最大堆&#xff08;或最小堆&#xff09;&#xff0c;然后依次将堆顶元素与堆的最后一个元素交换&#…

2023年低代码无代码产业大会:核心内容与学习收获(附大会核心PPT下载)

2023年低代码无代码产业大会聚焦了行业最前沿的趋势与技术&#xff0c;为企业数字化转型提供新的思路和方法。在这次大会上&#xff0c;我们可以深入了解到低代码/无代码技术的最新发展&#xff0c;以及如何利用这些技术来提高业务效率和创新能力。 一、大会的核心内容 1、低代…

net8 golang python性能比较

net8正式版出来两个月&#xff0c;现在性能到底如何呢&#xff0c;做个简单的例子和其他语言比较一下&#xff0c;测试内容是查找1000000以内的质数&#xff0c;代码不多&#xff0c;但包含了循环计算和Math库函数调用&#xff0c;直观的看一下语言之间差距是多少&#xff0c;心…

【AI视野·今日Robot 机器人论文速览 第七十三期】Tue, 9 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Tue, 9 Jan 2024 Totally 40 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers Digital Twin for Autonomous Surface Vessels for Safe Maritime Navigation Authors Daniel Menges, Andreas Von Brandis, A…

8.【TypeScript 教程】Never 与 Unknown

TypeScript Never 与 Unknown 本节介绍 never 和 unknown 类型&#xff0c;其中 unknown 类型作为 any 类型对应的安全类型使用起来更加安全&#xff0c;如果有 any 类型的使用需求&#xff0c;应尽量使用 unknown 类型来替代 any 类型。 1. 解释 never 类型表示那些永不存在…