首页
学习
活动
专区
圈层
工具
发布

单调递增的数字

单调递增的数字 给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。当且仅当每个相邻位数上的数字x和y满足x 递增的。...10) * 10 - 1 = 1330 - 1 = 1329 // 第二次循环就是 1300 - 1 = 1299 } return num; }; 思路 整体思路就是将数字当作字符串...通常来说可以把数字作为字符串来遍历处理,上面的题解是使用纯数字的方式去做,首先定义i作为标记记录遍历到到的位置,之后定义num作为待处理的数字,定义循环只要能够继续取出两位数就继续循环,这是循环的终止条件...,此外能够使用乘法的地方就尽量不要使用除法,在js中int32如果不能够整除则会自动转双精度64,所以在很多地方都需要强制转数值为int32,之后取出两位数,这里~~是使用位运算强制转了整型,在之后将i...* 10定义到下一位,如果低一位上的值大于大于高一位上的值,那么就将数值在第i位以后的值都变成0,然后减1即可达到上述的将此位减1以及之后的数字都变为9,可以参考上边的示例,在循环结束后返回处理的数字即可

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    贪心算法:单调递增的数字

    738.单调递增的数字 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。...(当且仅当每个相邻位数上的数字 x 和 y 满足 x 递增的。)...空间复杂度:O(1) 贪心算法 题目要求小于等于N的最大单调递增的整数,那么拿一个两位的数字来举例。...例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数...这么说有点抽象,举个例子,数字:332,从前向后遍历的话,那么就把变成了329,此时2又小于了第一位的3了,真正的结果应该是299。 所以从前后向遍历会改变已经遍历过的结果!

    96330

    单调递增的数字

    单调递增的数字:https://leetcode-cn.com/problems/monotone-increasing-digits/ 一起刷题吧 一、题意分析 输入:非负整数(大于等于0) 输出:...从前往后遍历的思路也很简单,遍历找到第一个不满足递增条件的位置,将此位置减 1,此位置之后的数值全变成 9 即可。...但需要注意的是,因为涉及到有一个位置会减 1,所以可能出现减 1 之后,与前一位不再是递增关系了,因此当我们找到了第一个不满足递增条件的位置后,要从当前位置往前找,找到第一个满足减 1 之后仍然满足递增条件位置...也就是说两个寻找: 从前往后找到第一个不满足递增条件的位置 从后往前找到第一个满足减 1 后仍然满足递增条件的位置 找到位置之后的元素变成 9,当前位置减 1,就是最终结果 实现参考代码如下: class...N //= 10 digits = digits[::-1] marker = len(digits) # marker是第一个需要改成9的数字

    92420

    为什么建议使用递增的业务ID

    注意,严格递增不允许序列中的元素相等。例如,序列1,2,31,2,3就是严格递增的。 为什么要使用递增的业务ID 1. 易于管理和跟踪 使用递增的业务ID可以使得数据管理和跟踪变得更加容易。...例如,我们可以使用二分查找算法来快速定位到特定的业务ID,或者使用基于比较的排序算法来对业务ID进行排序。 2. 有助于数据库性能优化 使用递增的业务ID还可以帮助优化数据库的性能。...分布式ID生成器 在分布式系统中,由于数据可能分布在多个数据库或服务器上,因此需要一个能在全局范围内生成递增ID的机制。...递增ID的生成和管理在大规模系统中的挑战: 在大规模系统中,由于数据可能分布在多个数据库或服务器上,因此需要一个能在全局范围内生成递增ID的机制。...ID;二是使用内存数据库,如Redis,其提供的INCR命令可以用来生成高效的递增ID;三是使用分布式协调服务,如ZooKeeper,其提供的顺序节点可以用来生成持久化的递增序列号。

    72110

    卷积神经网络实现多个数字识别

    (http://keras-cn.readthedocs.io/en/latest/other/datasets/#mnist) 这是优达学城的深度学习项目,数据集和需求都很简单,关键是为了熟悉框架的使用以及项目搭建的套路...需求描述 随机从MNIST数据集中选择5个或5个以下的数字,拼成一张图片,如下图所示。搭建一个模型,识别图片中的数字,空白字符的类型为0。 ?...训练集是用来训练模型的;验证集是用来对训练的模型进行进一步调参优化,如果使用测试集验证,网络就会记住测试集,容易使模型过拟合;测试集用来测试模型表现。...合成的图片 CNN搭建 使用了keras的函数式模型,很方便,可以参考官方文档。...可以用循环一一比对,我这里用了些概率论知识,因为都是独立事件,所以5个数字的准确率乘起来就是模型准确率。

    1.3K20
    领券