package highFrequencyLeetcode.leetcode_66; /** *

* * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 * * 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 * * 你可以假设除了整数 0 之外,这个整数不会以零开头。 * * 示例 1: * * 输入: [1,2,3] * 输出: [1,2,4] * 解释: 输入数组表示数字 123。 * * * 示例 2: * * 输入: [4,3,2,1] * 输出: [4,3,2,2] * 解释: 输入数组表示数字 4321。 * *

* * @author Seina * @version 2019-06-11 19:45:31 */ public class PlusOne { /** * 此题需要注意的是如果末位加一之后的值是 10,需要进一位 * 例如 999,加一之后 多一位数 * * @param digits: 输入的数组表示一个数字 * @return 输出一个数组,表示加一之后的数字 */ public int[] plusOne(int[] digits) { for (int i = digits.length - 1; i >= 0; i--) { digits[i]++; /** * Java 语言的 % 表示取余,此段代码大致有两种情况: * 加一之后等于 10,那么 10 % 10 = 0,该位置元素变成 0 * 加一之后不等于 10,那么 9 % 10 = 9,该位置元素就是加一后的值 9 */ digits[i] %= 10; /** * 等于 0 时,直接进入下一层循环,继续将前面的元素加一 * 不等于 0 时,表示不用进位,直接返回结果 */ if (digits[i] != 0) return digits; } //特殊考虑到 99999 等的情况 digits = new int[digits.length + 1]; digits[0] = 1; return digits; } }