LeetCode初级算法之数组:66.加一
加一
题目地址:https://leetcode-cn.com/problems/plus-one/
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
1 | 输入: [1,2,3] |
示例 2:
1 | 输入: [4,3,2,1] |
题目信息
输入:整数数组(整体表示一个数字每一位就是0-9,个十百千…位)
输出:整数数组(给这个数字加一之后用数组表达对应数字)
思考
一开始想到的就是模拟加法,在仔细读题目后又得到了另一种解决方式,就是还原成表达的数字加一之后再还原成数组。
1 | [1,2,3] |
1 | [4,3,2,1] |
1 | //方式一 |
这个代码在LeetCode上是没办法提交通过的,因为LeetCode使用的示例数组化成数字超过了long的范围,可以换成更大的BigInteger但LeetCode不识别。
还有一种方式就是最开始想到的,就是模拟加法手动去设置值。加一考虑的点就是低位连续的9。直到不是9的位加1其他设0
1 | //方式二 |
总结
总体来说是简单的两种思路,一是化成数字不用管怎么加再化回数组,二是模拟加法过程。后者要优一点
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 木瓜煲鸡脚's blog!
评论