题目:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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/)后并根据作者的解题思路,编写出了相应的解题代码。
解题思路+代码:
代码:
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;}
}
总结:向大佬学习的一天,继续加油~