数据结构和算法分析数据结构与算法

Leetcode-66 加一

2021-10-29  本文已影响0人  itbird01

66. 加一

解题思路

1.基于数组直接操作,由末尾递进操作,进行进位判断
2.如果大于10,则将累加位保留到下一次,如果小于10,则直接将当前结果赋值,并且value递进位为0
3.判断最后递进位是否为0,如果不为0 ,则需要在原先数组上,添加一位

解题遇到的问题

后续需要总结学习的知识点

1.Arrays.copyof与System.arraycopy的区别和联系

##解法1
class Solution {
    public int[] plusOne(int[] digits) {
        // 基于数组直接操作,由末尾递进操作,进行进位判断
        int value = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            //如果大于10,则将累加位保留到下一次
            if ((digits[i] + value) / 10 != 0) {
                value = (digits[i] + value) / 10;
                digits[i] = (digits[i] + value) % 10;
            } else {
                //如果小于10,则直接将当前结果赋值,并且value递进位为0
                digits[i] = digits[i] + value;
                value = 0;
            }
        }
        //判断最后递进位是否为0,如果不为0 ,则需要在原先数组上,添加一位
        if (value != 0) {
            int[] result = new int[digits.length + 1];
            System.arraycopy(digits, 0, result, 1, digits.length);
            result[0] = value;
            return result;
        } else {
            return digits;
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读