算法练习——加一

2021年1月30日每日算法练习66. 加一,这道题跟之前的加法相似,这题只需要加一,之前的需要加一个n,首先以算术加法的形式去模拟运算,用一个变量保存余数,余数初始为0,使用链表存储新的数字。从给出的digits的最后一项开始运算,如果是最后一项,则加上一和余数,这样每一项都不会丢掉这个余数,直到整个数组遍历完成,剩下的余数加到最前面即可,题目要求返回int数组,因此遍历链表转换成数组返回。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public int[] plusOne(int[] digits) {
LinkedList<Integer> newNum = new LinkedList<>();
int rest = 0;
for (int i = digits.length - 1; i >= 0; i--) {
int num = digits[i] + rest;
if (i == digits.length - 1) {
num += 1;
}
newNum.addFirst(num % 10);
rest = (num / 10);
}
if (rest != 0) newNum.addFirst(rest);
int[] ret = new int[newNum.size()];
for (int i = 0; i < newNum.size(); i++) {
ret[i] = newNum.get(i);
}
return ret;
}
}