LeetCode 66 ----- 加一
题目描述
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
思路
从右向左遍历数组
加 1 后判断有没有进位,有进位则当前为置为 0,前一位加 1,循环下去,直至没有进位,退出循环,返回进位后的的数组;(例:269—270)
若直至最后一位仍有进位,则新建数组,数组长度比原数组长度大 1,最高位置为1,其余位置为 0,返回新建的数组。(例:99-100)
实现
/**
* Author: lisiyu
* Created: 2020/1/30
*/
// LeetCode 66 ----- 加一
public class PlusOne66 {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i >= 0; i--) {
digits[i]++;
digits[i] %= 10;
if (digits[i] != 0) {
return digits;
}
}
digits = new int[digits.length + 1];
digits[0] = 1;
return digits;
}
}