天天看点

【Leetcode】66. Plus One题目地址:

题目地址:

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)。