Leetcode--738. 单调递增的数字
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。
(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)
示例 1:
输入: N = 10
输出: 9
示例 2:
输入: N = 1234
输出: 1234
示例 3:
输入: N = 332
输出: 299
说明: N 是在 [0, 10^9] 范围内的一个整数。
思路:
如果a[i]一直大于等于a[i-1],直接输出就好
如果不是,需要判断,主要分两种情况:
1.如果a[i]<a[i-1]并且a[i-1]>a[i-2],则a[i-1]-=1,后面的都变为9
例如:123453->123449
2.如果a[i]<a[i-1]并且a[i-1]>=a[i-2],则一直向前遍历,直到a[k]!=a[i-1],然后a[k]-=1,h后面的都变为9
例如:123332->122999
提交的代码:
class Solution {
public int monotoneIncreasingDigits(int N) {
int t,sum=0,i=0,n=1,b;
int a[] = new int[12];
t = N;
while(t!=0)
{
t = t/10;
i++;
}
t = N;
b=i;
while(t!=0)
{
a[i-1] = t%10;
t = t/10;
i--;
}
t=0;
sum = a[0];
for(i =0;i<b;i++)
{
if(i>0)
{
if(a[i]>=a[i-1])
{
sum = sum*10+a[i];
if(a[i]==a[i-1])
{
n++; //n用来记录有多少个连续相同的数字
}
else
{
n=1;
}
continue;
}
else
{
while(n!=0)
{
sum = sum-a[i-1-t];
sum = sum/10;
t++;
n--;
//System.out.println(sum);
}
a[i-t] = a[i-t] - 1;
sum = sum*10+a[i-t];
// System.out.println(sum);
for(int j=i-t+1;j<b;j++)
{
a[j] = 9;
sum = sum*10+a[j];
}
break;
}
}
}
return sum;
}
}
Leetcode--738. 单调递增的数字相关推荐
- Java实现 LeetCode 738 单调递增的数字(暴力)
738. 单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= ...
- [Leetcode]738. 单调递增的数字
当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的. 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 . 示例 1: 输入: ...
- LeetCode 738. 单调递增的数字(贪心)
1. 题目 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称 ...
- leetcode 738. 单调递增的数字(贪心算法)
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...
- LeetCode 738 单调递增的数字
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...
- Leetcode 738. 单调递增的数字
题目 解题思路 思路:贪心思路,从前往后找到不符合条件的位置,然后把这个位置的数-1,然后这个位置后面的数全部改为9 循环反复即可,代码有点长,注释很齐全. 加油,再多努力! 代码 class Sol ...
- leetcode(力扣)738. 单调递增的数字||714. 买卖股票的最佳时机含手续费
738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n) ...
- LeetCode-Algorithms-[Mid]738. 单调递增的数字
给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- 738. 单调递增的数字
链接:738. 单调递增的数字 题解:https://leetcode-cn.com/problems/monotone-increasing-digits/solution/dan-diao-di- ...
最新文章
- 贪心 Codeforces Round #236 (Div. 2) A. Nuts
- EXCEL如何验证重复数据?
- Spring注入方法
- php android html字符串,实例讲解php将字符串输出到HTML
- Ubuntu用ssh连接虚拟机
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
- 面试官又问我Select * 为什么效率低下?
- 在ipad上的几款远程桌面工具使用体会
- React 还是 Vue: 你应该选择哪一个Web前端框架?
- HAL库配置F407ZE DDS AD9854
- [Android][sensor][mag]指南针方向偏差,软磁三轴调整
- 上层应用程序是如何访问到底层驱动程序的呢?
- Google浏览器中扩展插件方法
- 奇葩90后引领了哪些互联网潮流?
- 6.1 Python 单分支结构 if语句
- 配置dovecot服务(3)
- 苹果cmsV10仿B站风模板源码
- c语言微信昵称大全女生优雅经典的,女生优雅的微信昵称
- Origin 手把手叫你安装【亲测有效!】
- tp6使用redis消息队列
热门文章
- POJ 1321 棋盘问题(回溯)
- 映射表map(平衡二叉树实现)_手动实现Java集合容器之TreeMap(上)
- ifix的MySQL数据库_iFIX 技术文章:iFIX历史数据库
- matlab fig生成exe,MATLAB GUI多个m文件和fig如何生成exe文件
- php 函数封装上传,PHP(多)文件上传实现和函数封装
- 拒绝无脑吹!从ACL20看预训练缺陷
- Spring Cloud构建微服务架构(七)消息总线
- Java面试进阶:Dubbo、Zookeeper面试题锦集
- 系统性能衡量维度、指标
- 论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入