首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单调递增数字

单调递增数字 给定一个非负整数N,找出小于或等于N最大整数,同时这个整数需要满足其各个位数上数字是单调递增。当且仅当每个相邻位数上数字x和y满足x <= y时,我们称这个整数是单调递增。...10) * 10 - 1 = 1330 - 1 = 1329 // 第二次循环就是 1300 - 1 = 1299 } return num; }; 思路 整体思路就是将数字当作字符串...,从尾到头逆向遍历一遍,每次比较两位,如果后一个位置上数小于前一个位置上数,那么就将前边数减一,并将后边所有位都变为9,例如当我们遍历到了1323中比较32这个位置上,此时3 > 2符合条件,...通常来说可以把数字作为字符串来遍历处理,上面的题解是使用纯数字方式去做,首先定义i作为标记记录遍历到到位置,之后定义num作为待处理数字,定义循环只要能够继续取出两位数就继续循环,这是循环终止条件...* 10定义到下一位,如果低一位上值大于大于高一位上值,那么就将数值在第i位以后值都变成0,然后减1即可达到上述将此位减1以及之后数字都变为9,可以参考上边示例,在循环结束后返回处理数字即可

1.5K20

贪心算法:单调递增数字

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

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

    如何查找递增连续数组中缺失数字

    在一个长度为n递增数组中,数组中元素范围是0 ~ n-1,如何在这个递增连续数组中查找缺失数字? 分析下: 1. 排序数组中搜索算法,首先想到就是二分法查找 2....丢失数字之前左子数组:nums[m] = m, 需要找到第一个nums[m] > m数组索引值即可....r = m-1; 这里多解释下,即使m-1这个位置是相同, 也会被后续左指针r=m+1情况下处理掉,此处不好理解,需多多体会....在处理边界值时候,在(i == r)时候,还多需要多遍历一次,向右移动左指针一次. 4. 这时,左指针值便是最后想要值. 所以我们遍历条件为(l<=r),最后左指针位置即为缺失结果值....综上,对于有序数组查找,一般都会使用二分法查找.在查找数据时候,注意左右边界指针移动.以及遍历标记(l<=j)即可.

    3.1K21

    单调递增数字

    单调递增数字:https://leetcode-cn.com/problems/monotone-increasing-digits/ 一起刷题吧 一、题意分析 输入:非负整数(大于等于0) 输出:...通过观察,我们可以发现如果新个位数与它前一位比较,如果符合题目中递增要求,则直接写入在最前位即可,如果不符合,则需要做转换,转换规律也很简单,即将原来记录结果每一位都转换为 9,即低位最大,而当前获取个位数减...通过上面的推导过程,我们知道需要记录前一位被比较数值,同时还涉及到低位替换为 9 过程,我们可以在遍历过程把低位替换 9 结果保存下来,在需要替换时直接取值即可,参考代码如下: class Solution...但需要注意是,因为涉及到有一个位置会减 1,所以可能出现减 1 之后,与前一位不再是递增关系了,因此当我们找到了第一个不满足递增条件位置后,要从当前位置往前找,找到第一个满足减 1 之后仍然满足递增条件位置...N //= 10 digits = digits[::-1] marker = len(digits) # marker是第一个需要改成9数字

    72620

    单调递增数字

    题目:https://leetcode-cn.com/problems/monotone-increasing-digits 给定一个非负整数 N,找出小于或等于 N 最大整数,同时这个整数需要满足其各个位数上数字是单调递增...(当且仅当每个相邻位数上数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增。)...分析 由于结果要求各位数字单调递增,那么这些数字必然形如 a0a1a2……an (1 <= a0 <= a1 <= a2 <= …… <= an <= 9) 显然有: ----------...a2 - a1) * 111……1 + ………… + (an - an-1) * 1 \-(n-2)个1-/ 可见最终结果必然是若干个形如 11……11 数字相加所得...本题中,最大n为10^9,所以,可以从111111111开始依次累加,如果继续累加将导致结果超过n,则去掉一个1继续循环。总累加次数不超过9次。

    41910

    华为OD机试 非严格递增连续数字序列

    本期题目:非严格递增连续数字序列 题目 输入一个字符串仅包含大小写字母和数字 求字符串中包含最长非严格递增连续数字序列长度 比如: 12234 属于非严格递增数字序列 输入 输入一个字符串仅包含大小写字母和数字...输出 输出字符串中包含最长非严格递增连续数字序列长度 题解地址 ⭐️ 华为 OD 机考 Python https://blog.csdn.net/hihell/article/details...⭐️ 华为 OD 机考真 C 语言 https://blog.csdn.net/hihell/article/details/129371298 华为 OD 机试 对于想要参加华为OD机试应聘者来说...,需要提前准备好相关知识和技能。...在准备期间,应聘者需要系统地学习各种编程语言知识,熟悉各种数据结构和算法使用方法,同时还需要进行大量练习和实战演练,积累经验,提高解决问题能力。

    78820

    怎样将IP地址转换为数字

    首先我们选择一个IP地址,这里我找了一个,PING一下,是通。好就用这个IP地址做测试吧。 ? 打开开始菜单中选择计算器,设置计算器类型为程序员 ?...在十进制下输入IP地址第一个段,10 转换为十六进制数,如图,已经将10进制10转换为了十六进制A了。 ? 清空结果。 把刚刚转换数字记录下来,继续转换下一段IP地址。...把其它三个都用同样方法进行转换,并把结果记录下来。 我转换完是 A 50 6 A6 把刚刚转换后结果,输入到十六进制下计算机器中。...(每组2位,只有一位前面0补齐) 将十六进制数转换为十进制数,于是我们得到了一串数字。‭173016742‬。这就是我们得到数字了。 ? 好了,我们测试一下。ping 刚刚那段数字。...可以看到,返回结果已经出来了,就是我们刚刚转换那段IP地址了。 ?

    2.7K20

    mysql中字符转数字,MYSQL字符数字换为数字「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。...1、将字符数字转成数字,比如’0’转成0可以直接用加法来实现 例如:将user表中uid 进行排序,可uid定义为varchar,可以这样解决 select * from user order by...(uid+0) 2、在进行ifnull处理时,比如 ifnull(a/b,’0′) 这样就会导致 a/b成了字符串,因此需要把’0’改成0,即可解决此困扰 3、比较数字和varchar时,比如a=11...,b=”11ddddd”; 则 select 11=”11ddddd”相等 若绝对比较可以这样: select binary 11 =binary “11ddddd” 另外: 今天看到Mysql Cast...和Convert函数,也能实现‘字符数字换为数字’ 两者具体语法如下: Cast(value as type); Convert(value ,type); type不是都可以滴,可以转换type

    1.9K20

    如何在 Python 中将数字换为字母?

    在编程中,有时我们需要将数字换为字母,例如将数字表示年份转换为对应字母表示,或者将数字编码转换为字母字符。Python 提供了多种方法来实现这种转换。...因此,可以通过将数字加上 65,然后使用 chr() 函数将其转换为对应字母。...我们可以通过索引操作将数字换为对应字母。...通过将数字加上 65,然后使用 chr() 函数将其转换为对应字母,和方法一类似。同时,我们还可以通过将字母减去 65,然后使用 ord() 函数将其转换为对应数字。...通过使用 chr() 函数,我们可以将数字换为对应字母。方法一和方法三中示例代码展示了如何使用 chr() 函数来实现这一转换。这种方法简单直接,适用于将数字换为大写字母 A-Z。

    1.8K40

    js中字符串转换为数字

    js 字符串转化成数字三种方法主要有 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数:   js提供了parseInt()和parseFloat()两个转换函数。...ECMAScript中可用3种强制类型转换如下:   Boolean(value)——把给定值转换成Boolean型;   Number(value)——把给定值转换成数字(可以是整数或浮点数);...用这三个函数之一转换值,将创建一个新值,存放由原始值直接转换成值。这会造成意想不到后果。 当要转换值是至少有一个字符字符串、非0数字或对象时,Boolean()函数将返回true。...如果该值是空字符串、数字0、undefined或null,它将返回false。 可以用下面的代码段测试Boolean型强制类型转换。   ...,实现了字符串到数字类型转换,不过这个方法还是不推荐

    11.4K41
    领券