前言
马上就春暖花开了,希望期望的事情一切顺利,要更努力才能更幸运,干巴爹~
今日题目
leecode66题:leecode66.加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123
示例 2:
输入:digits = [9, 9]
输出:[1, 0, 0]
解释:输入数组表示数字 99
题目分析
拿到这个题目我第一想法是把数组变成数字然后再加一再转回来,结果报错: 长度超限制,所以我就只能老实的遍历数组了。。。
首先最高位放在数组的首位,也就是+1的操作从数组的结尾开始,遇到10向上进位, 所以从数组的末尾向前遍历
要注意99这样的情况,需要向数组首位增加一个1
思路:
遇9则变成0,如果有一位不是9,则+1直接返回(如 49 -》50, 34 -》35)
如果都是9,就在数组首位插入1(如 99 -》 100)
var plusOne = function(digits) {
for (let i = digits.length - 1; i >=0; i--) {
if (digits[i] === 9) {
digits[i] = 0
} else {
digits[i]++
return digits
}
}
digits.unshift(1)
return digits
}
总结
最近刷题,从一开始毫无思路到慢慢的敢尝试写写,开始慢慢入门了,希望培养刷题的习惯,培养算法的思维。
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情