Leetcode之66-加一(Plus One)

算法题

题干

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例

1
2
3
4
5
6
7
8
9
10
11
示例 1:

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

示例 2:

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

Java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public int[] plusOne(int[] digits) {
if (digits == null || digits.length <= 0) {
return digits;
}
final int LEN = digits.length;
int digit = 1;
for (int i = LEN - 1; i >= 0; i--) {
int bitSum = digits[i] + digit;
digits[i] = bitSum % 10;
digit = bitSum / 10;
if (digit == 0) {
break;
}
}
if (digit == 0) {
return digits;
}
int[] data = new int[LEN + 1];
System.arraycopy(digits, 0, data, 1, LEN);
data[0] = digit;
return data;
}

代码解析

  1. 第6行digit赋值为1, 因为要加1
  2. 第11-13行代码, 如果过程中digit为0表示没有进位, 可直接返回
  3. 最后3-4行代码表示digit进位不为0的情况下需将进位放在第一位

反问

  1. 这道算法题第一次提交就能通过么?
如果有任何错误或疑问, 欢迎小伙伴们评论区留言^-^
( 完 )

欢迎各位看官关注

麻辣烫,走起
0%