蓝桥与力扣刷题(66 加一)

题目:

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:

输入:digits = [9]
输出:[1,0]
解释:输入数组表示数字 9。
加 1 得到了 9 + 1 = 10。
因此,结果应该是 [1,0]。

注明:该题最初我只理解了题目意思中的加一,并未联想到是模拟了加法运算中的进位操作。由此,我查看了评论区中大佬的题解思路(引用评论区 作者---YHHZW 题解:https://leetcode.cn/problems/plus-one/solutions/4481/java-shu-xue-jie-ti-by-yhhzw/)后并根据作者的解题思路,编写出了相应的解题代码。

解题思路+代码:

蓝桥与力扣刷题(66 加一)_第1张图片

代码:

class Solution {
    public int[] plusOne(int[] digits) {
       /*
       思路:本质就是加法运算,但是只是用代码实现数组的加1操作
       这个时候不妨运用数学思维来解题
       会出现的两种情况:
       1.最后一个数字不为9,那么直接进行加1操作
       2.最后一个数字为9,需要进位,此时要将最后的数字赋值为0,前面的数需要进位操作;遇到特殊数99,999时,直接将数组的长度加1,并且首位赋值为1,其他位全部赋值为0
       */
       for(int i = digits.length -1;i>=0;i--){
        if(digits[i] != 9){
            digits[i]++;
            return digits;
        }else{
            digits[i] = 0;
        }
       }
       int[] result = new int[digits.length + 1];
       result[0] = 1;
       return result;
    }
}

总结:向大佬学习的一天,继续加油~

你可能感兴趣的:(leetcode,算法,数据结构,职场和发展,学习方法)