java 热度算法_java算法-(1)单调递增的数字

java小小白,学了很多的基础啊。但是感觉自已思维很差,就想着以后每天一道算法题,看看能不能补救一下吧。3分钟热度的我,来试一试能不能成功坚持吧。

今日2020-12-16 题目如下

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

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

看到一个这个题目,首先想到,是数字单调递增,既然是小于等于的话,那么就是从N开始一个一个递减,然后找到合适的就停止。我一开始就是这么想的,我愿意称之为傻瓜递减法。这个主要难的方面就是,你要想到一个算法。来把数字给带入进去,如果对的话返回true,不对的话返回false.我个人感觉就是脑子里边想的始终想不全,所以遇到事情问题最好还是要写到纸上。

接下来的就是考虑这个算法怎么写

9a3fb00aa3c17b900420dfba935f74c9.png

然后就是把算法带入递减的算法,进行测试。然后测试基本没有问题,我就提交了。

最后的结果居然是运行结果超时。咯咯咯 笑抽抽

我就在想,有什么办法,可以提高运行速度,因为问题就是如果数字太大的问题,万一合适的数字又很小,那么就导致运行次数太多,然后时间就超了啊。

官方的一套官方解释

d296294027429ba7897161b6eff62452.png

哈哈 我感觉大部分人都看不懂。我也是看了好几遍才看懂。大概意思是把数字转化我字符数组,尽量让低位置位9.然后再去看高位,在保证递增的情况下,让高位-1 。

89e5306310f79ec95a66913ff1a0d731.png

果然 还是需要努力啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值