加一(简单)
1. 题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
2. 个人解题思路
public static int[] plusOne(int[] digits) {
// 遍历数组
for (int i = digits.length - 1; i >= 0; i--) {
// 末位元素 +1 之后对10取余
digits[i] = ++digits[i] % 10;
// 如果不等于0则直接返回结果
if (digits[i] != 0){
return digits;
}
}
// 结束遍历后没返回则需定义一个长度+1的新数组
digits = new int[digits.length + 1];
// 数组首位元素值为1
digits[0] = 1;
// 返回结果
return digits;
}
3. 小结
- 该题可以遇到的情况有如下三种
- 情况一
- 末位元素 +1 之后对10取余不为0,则直接返回该数组即可.
- 情况二
- 元素 +1 之后对10取余为0,则前进一位,在到达首位元素前满足条件或首位元素满足返回条件则返回该数组.
- 情况三
- 以上两种情况都不满足,则代码该数组所有元素都为9, +1 之后长度需要再增加一位,则返回一个新的数组,且首位元素为1.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problem s/plus-one