加一
(可读性比较强的写法)
1. 首先看题目要求:
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0] 输出:[1]
2. 看看解题思路:
//思路:
//可以分为两种情况:①全是9的数字;②除999类型以外的数字,这种情况+1,需要进位的进位就行了
//1、第一步先从后往前遍历数组,找到9的,赋值为0,不是9的,就加上1
//2、第二步所有元素都为9,那么就直接new一个数组,第一位给1,后面的已经判断过,全置为0
3. 接下来是代码:
class Solution {
public int[] plusOne(int[] digits) {
int n = digits.length;
//开始从后往前遍历数组
for (int i = n - 1; i >= 0; i--) {
//如果为9,则置为0
if (digits[i] == 9) {
digits[i] = 0;
//其他情况+1
} else {
digits[i] += 1;
return digits;
}
}
//如果元素全部为9,需要new一个[n+1]的数组,把第一位置为1,其他位都是0
int[] ans = new int[n + 1];
ans[0] = 1;
return ans;
}
}

给定一个整数的数组形式表示的非负数,程序需要实现将其加一。遍历数组从后往前,遇到9则置为0,其他数字加1。如果所有数字都是9,则创建新数组在首位添加1,其余位为0。
965

被折叠的 条评论
为什么被折叠?



