给定一个非负整数 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. 单调递增的数字相关推荐

  1. Java实现 LeetCode 738 单调递增的数字(暴力)

    738. 单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= ...

  2. [Leetcode]738. 单调递增的数字

    当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的. 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 . 示例 1: 输入: ...

  3. LeetCode 738. 单调递增的数字(贪心)

    1. 题目 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称 ...

  4. leetcode 738. 单调递增的数字(贪心算法)

    给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...

  5. LeetCode 738 单调递增的数字

    给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...

  6. Leetcode 738. 单调递增的数字

    题目 解题思路 思路:贪心思路,从前往后找到不符合条件的位置,然后把这个位置的数-1,然后这个位置后面的数全部改为9 循环反复即可,代码有点长,注释很齐全. 加油,再多努力! 代码 class Sol ...

  7. leetcode(力扣)738. 单调递增的数字||714. 买卖股票的最佳时机含手续费

    738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strNum=to_string(n) ...

  8. LeetCode-Algorithms-[Mid]738. 单调递增的数字

    给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单 ...

  9. _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树

    _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...

  10. 738. 单调递增的数字

    链接:738. 单调递增的数字 题解:https://leetcode-cn.com/problems/monotone-increasing-digits/solution/dan-diao-di- ...

最新文章

  1. 贪心 Codeforces Round #236 (Div. 2) A. Nuts
  2. EXCEL如何验证重复数据?
  3. Spring注入方法
  4. php android html字符串,实例讲解php将字符串输出到HTML
  5. Ubuntu用ssh连接虚拟机
  6. [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
  7. 面试官又问我Select * 为什么效率低下?
  8. 在ipad上的几款远程桌面工具使用体会
  9. React 还是 Vue: 你应该选择哪一个Web前端框架?
  10. HAL库配置F407ZE DDS AD9854
  11. [Android][sensor][mag]指南针方向偏差,软磁三轴调整
  12. 上层应用程序是如何访问到底层驱动程序的呢?
  13. Google浏览器中扩展插件方法
  14. 奇葩90后引领了哪些互联网潮流?
  15. 6.1 Python 单分支结构 if语句
  16. 配置dovecot服务(3)
  17. 苹果cmsV10仿B站风模板源码
  18. c语言微信昵称大全女生优雅经典的,女生优雅的微信昵称
  19. Origin 手把手叫你安装【亲测有效!】
  20. tp6使用redis消息队列

热门文章

  1. POJ 1321 棋盘问题(回溯)
  2. 映射表map(平衡二叉树实现)_手动实现Java集合容器之TreeMap(上)
  3. ifix的MySQL数据库_iFIX 技术文章:iFIX历史数据库
  4. matlab fig生成exe,MATLAB GUI多个m文件和fig如何生成exe文件
  5. php 函数封装上传,PHP(多)文件上传实现和函数封装
  6. 拒绝无脑吹!从ACL20看预训练缺陷
  7. Spring Cloud构建微服务架构(七)消息总线
  8. Java面试进阶:Dubbo、Zookeeper面试题锦集
  9. 系统性能衡量维度、指标
  10. 论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入