738.单调递增的数字
'''
Description: 738.单调递增的数字
Autor: 365JHWZGo
Date: 2021-11-10 09:34:56
LastEditors: 365JHWZGo
LastEditTime: 2021-11-10 14:55:40
'''class Solution(object):def monotoneIncreasingDigits(self, n):""":type n: int:rtype: int""" strN = str(n)f = strN[0]first = 0length = 0for i in range(1, len(strN)):if int(strN[i]) < int(f): breakelif int(strN[i]) == int(f):length += 1continueelse:f = strN[i]first = iif first==len(strN)-1 or length == len(strN)-1:return n else:return int(strN[:first] + str(int(strN[first])-1)+'9'*(len(strN)-first-1))
思路:
one:
今天上午一直考虑的是如何循环,从最大值往下找数字,这样经过无数次的失败之后就一定会找到符合题目要求的数字,但是,在进行测试时发现,运行超出时长限制。
two:
然后开始探索第二种思路,我发现了一些规律,比如
11491537
这个测试用例的话,它就是在最大值处-1,然后结尾补9
然后我又登上了注定失败的路途
three:
我发现并不是所有的都是在最大值处-1,结尾补9,比如
418
它是在当第二位<第一位时就需要将第一位-1,结尾补9
four:
答案可想而之,还是有测试点无法通过,比如
99998
five:
最后我还是总结一下思路,利用了一个first指针,来识别截取的位置
首先,你会发现这道题的特点
它相邻两位的只有三种情况
一:前一位>后一位
二:前一位=后一位
三:前一位<后一位
真对这三种情况分别进行讨论:
一:前一位>后一位
- 这说明此时已经不符合题目要求,再往后判断已经没有意义,所以需要记录前一位的下标,break
二:前一位=后一位
- 这种情况的话还需要继续判断,比如
339967
- 此时判断完33之后并不能代表着结束,所以需要continue跳过
三:前一位<后一位
- 这种情况需要记录first的下标,因为它代表着当后面一旦出现不符合条件的值时可以从first下标进行-1操作,并在结尾补9
并且我发现有first还可以判断正序的数字,比如1234,因为当first==len(str(n))-1时,这时代表是正序,当然除了正序的情况还有另一种需要特殊考虑的,比如11,它需要用一个length来识别,当他等于数字的长度时,则代表他也属于可以直接输出结果的那种。
至此,这道题就完美收官!
738.单调递增的数字相关推荐
- 738. 单调递增的数字
链接:738. 单调递增的数字 题解:https://leetcode-cn.com/problems/monotone-increasing-digits/solution/dan-diao-di- ...
- 力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树
文章目录 738. 单调递增的数字 思路 难点:遍历顺序 难点:设置flag 714. 买卖股票的最佳时机含手续费 贪心思路 难点 968. 监控二叉树 思路 难点:如何隔两个节点放一个摄像头 738 ...
- Java实现 LeetCode 738 单调递增的数字(暴力)
738. 单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= ...
- 代码随想录训练营第37天|738.单调递增的数字、968.监控摄像头
738.单调递增的数字.968.监控摄像头 738.单调递增的数字 对于单调递增的数字,我们可以逆序遍历一下数组,如果每个位置的数字都满足小于下一个位置,则说明这个位置满足条件. 如果一个数字不满足条 ...
- Leecode 738. 单调递增的数字 贪心
原题链接:Leecode 738. 单调递增的数字 代码写的是真烂,,,可读性就是"仅自己可读"的程度... class Solution {public:int monotone ...
- [Leetcode]738. 单调递增的数字
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的. 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 . 示例 1: 输入: ...
- LeetCode-Algorithms-[Mid]738. 单调递增的数字
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- 代码随想录算法训练营第37天|738. 单调递增的数字,714. 买卖股票的最佳时机含手续费,968. 监控二叉树
Day 37 738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strN = to_st ...
最新文章
- Android开发历程_18(XML文件解析)
- Python将被加入高考科目?你怎么看?
- 小结spring和struts整合的三类方式
- windows挂载linux网络文件系统NFS
- cesium 局部加载_cesium自定义气泡窗口infoWindow后续优化篇 - GIS之家
- mariadb安装_MariaDB CentOS 安装的时候如何确定 Repo 地址
- 如何彻底删除nginx
- 数据库errno: 1045的解决办法
- u盘启动盘制作工具多个linux,多系统U盘启动盘制作工具
- gomarket服务器位置,V712双核版机型常见问题集解答.pdf
- 唐老师讲运算放大器(第五讲)——运放的应用
- 在Ext JS本地化
- 青少年软件编程(Python)等级考试试卷(一级)
- 如何使用mp4v2解析mp4文件,抽取音视频数据帧【源码】【mp4】【NVR】
- [LeetCode] Sqrt(int x)解题报告之无限逼近(牛顿法)
- ES6 -- 简单笔记总结
- Elliptic Labs与Syntiant携手为Bosch的spexor设备打造持续在线的超低功耗体验
- 发现一款比较强大的web打印工具HttpPrinter
- 干货丨Ceph 日常运维常见难点及故障解决
- spring简介和IOC