Leetcode-66 加一

作者: itbird01 | 来源:发表于2021-10-29 16:07 被阅读0次

    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;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode-66 加一

        本文链接:https://www.haomeiwen.com/subject/eywialtx.html