题目地址:
https://leetcode.com/problems/plus-one/
以数组形式给定一个十进制整数,要求返回其加一之后的数对应的数组。
模拟人工加法即可。代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Solution {
public int[] plusOne(int[] digits) {
List<Integer> list = new ArrayList<>();
for (int i = digits.length - 1; i >= 0; i--) {
list.add(digits[i]);
}
int carry = 1;
for (int i = 0; i < list.size(); i++) {
int cur = list.get(i);
cur += carry;
carry = cur / 10;
list.set(i, cur % 10);
}
// 如果最高位有进位,还需补一个1
if (carry == 1) {
list.add(1);
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(list.size() - 1 - i);
}
return res;
}
}
时空复杂度 O ( n ) O(n) O(n)。