Leetcode 加一

一颗蔬菜 2019-09-03 AM 30℃ 0条

原题链接

一开始没看明白题,以为数组长度不可变。

    class Solution {
    public int[] plusOne(int[] digits) {
        int carry = 1; // 进位标志
        int tmp;
        for (int i = digits.length - 1; i >= 0; i--) {
            tmp = digits[i];
            digits[i] = (tmp + carry) % 10; // 计算当前位的新值
            carry = (tmp + carry) / 10; // 计算新的进位
            if (carry == 0) {
            break;
            }
        }
        
        if (carry == 1) { // 形如999、99、9的情况
            int[] result = new int[digits.length + 1];
            // 源数组, 源数组中开始复制的起始位置,目的数组, 目的数组的起始位置, 需要复制的长度
            System.arraycopy(digits, 0, result, 1, digits.length);
            result[0] = carry;
            return result;
        }else{
            return digits;
        }
    }
}

Snipaste_2019-09-03_09-59-13.png

标签: 算法

非特殊说明,本博所有文章均为博主原创。