
leetcode Plus One
初始化变量:用于处理进位和数位。 从最后一位开始加一:将数字的最后一位加一。 从右向左处理每个数位:检查是否需要进位。如果某位超过9,进行进位处理,将其设为0,并将进位继续传递到高位。 处理最高位进位:如果在处理过程中发现最高位需要进位,则需要在数组的前面插入一个新的元素。
发布日期:2025-04-05 01:32:36
浏览次数:8
分类:精选文章
本文共 1964 字,大约阅读时间需要 6 分钟。
在解决这个问题时,我们需要将一个非负的数字,表示为数组形式,并给其加一。数组中的每个元素代表该数位的数字,可能出现的数组并不完全标准,所以我们需要进行额外的处理,确保每个元素都是一个单独的0到9的数字。加一操作后,可能需要处理进位,包括最高位进位时需要在数组前面插入一个新元素。以下是详细的解决方案和代码实现。
问题描述
给出的数字是一个数组,其中每个元素代表数位的一个数字。例如,数字100会被表示为[1,0,0]。我们的任务是对这个数进行加一运算,返回最终的数组形式。需要注意的是,数组可能并不标准,可能包含大于等于10的数字,我们需要先将其标准化。
解决思路
解决这个问题需要以下几个步骤:
代码实现
以下是C++代码实现:
#includeusing namespace std;class Solution {public: vector plusOne(vector & digits) { int s = digits.size(); int n = 0, j = 0, r = 0; if (s == 0) { digits.push_back(1); return digits; } // 从最后一位开始加一 digits[s - 1] += 1; for (int i = s - 1; i >= 0; i--) { if (digits[i] >= 10) { n = digits[i]; digits[i] = 0; j = i; while (n != 0) { r = n % 10; if (j > 0) { digits[j] += r; j--; } else { digits.insert(digits.begin(), r); } n /= 10; } } } return digits; }};
代码解释
- 初始化变量:
n
、j
和r
用于处理进位和当前数字部分。 - 从最后一位开始加一:将数字的最后一位加一,开始加一操作。
- 从右向左处理每个数位:遍历数组从最后一个元素到第一个元素,检查是否需要进位。
- 进位处理:如果当前数位大于等于10,进行进位,此时将当前数位设为0,并将进位值传递到前一个数位。
- 处理最高位进位:如果在最高位处理完毕后仍有进位,需要在数组的前面插入一个新的数字,表示最高位的加一。
测试与边界条件
以下是一些测试用例,验证代码的正确性:
数字为10:加一后的数组形式应该是[1, 1]。具体步骤:
- 最后一位加一,得到[1, 10]。
- 处理第二位(下标为1):10 >=10,设为0,传递进位。
- 传递到第一位(下标为0):1 +1=2。
- 最终数组为[2, 0]。
数字为999:加一后的数组形式应为[1, 0, 0, 0]。具体步骤:
- 最后一位加一,得到[9,9,10]。
- 处理第三位(下标2):10 >=10,设为0,传递进位。
- 传递到第二位(下标1):9 +10 =19 >=10,设为0,传递进位。
- 继续处理第一位下标0: 9 +1=10 >=10,设为0,传递进位。
- 由于没有更多的位置可处理,现在传递进位到第一位位置:插入1在前面,形成[1, 0, 0, 0]。
数字为0:加一后的数组形式应为[1]。具体步骤:
- 数组为空,添加0,然后加一得到1。
代码处理了所有这些情况,确保了加一操作的正确性。
通过以上的分析和代码实现,我们成功解决了将数组表示的数字加一的问题,并确保了代码的正确性和完整性。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月15日 18时33分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
leaflet加载接入腾讯矢量、腾讯影像地图(leaflet篇.4)
2023-01-30
leaflet动态热力图分析(leaflet篇.16)
2023-01-30
leaflet动态热力图(大数据版)(leaflet篇.17)
2023-01-30
leaflet区域聚合点(点击后散开并进行合理定位)(leaflet篇.22)
2023-01-30
leaflet叠加geojson图层并居中到屏幕三分之一的位置(leaflet篇.67)
2023-01-30
leaflet叠加geojson图层(leaflet篇.38)
2023-01-30
leaflet叠加geojson图层(挖洞)(leaflet篇.43)
2023-01-30
leaflet叠加多个面(面的数据结构)(leaflet篇.62)
2023-01-30
leaflet图标跳动(leaflet篇.45)
2023-01-30
leaflet图标闪烁(leaflet篇.20)
2023-01-30
leaflet地图无级别缩放(移动端)(leaflet篇.76)
2023-01-30
leaflet实现wms服务面要素可点击(leaflet篇.30)
2023-01-30
Leaflet快速入门与加载OSM显示地图
2023-01-30
leaflet接入geoserver发布的热力图服务(leaflet篇.29)
2023-01-30
leaflet接入土地资源(leaflet篇.55)
2023-01-30
leaflet接入天地图(经纬度投影256)(leaflet篇.24)
2023-01-30
leaflet接入百度午夜蓝地图、深色地图(leaflet篇.27)
2023-01-30
leaflet接入百度影像地图(leaflet篇.34)
2023-01-30
leaflet散点图(leaflet篇.13)
2023-01-30