/**
* 思想方法:若末位无进位,第一层判断完即可直接返回结果,如28-->29;若末位有进位,
* 但最高位无进位,判断完之后返回结果,如199-->200;若最高位也有进位,if语句
* 最终失效,数字带着若干个0跳出for循环,进行下一步:给数组添加一个最高位,
* 且赋值为1,如 999-->1000
*
* @author Leetcode YHHZW
*/
示例 1:
输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。
示例 2:
输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
public class Demo08Arr {
public static int[] plusOne(int[] digits) {
//从最低位开始考虑
for (int i = digits.length - 1; i >= 0; i--) {
digits [i] ++;
digits [i] = digits [i] % 10;
if (digits[i] != 0) {
return digits;
}
}
digits = new int[digits.length + 1];
digits[0] = 1;
return digits;
}
}
//测试代码
import static Leetcode_True.Demo08Arr.plusOne;
public class Demo08 {
public static void main(String[] args) {
//注意:在类中返回值和参数列表均为数组
int[] ai = plusOne(new int [] {9,9});
for(int s:ai) {
//为保证和题目要求的格式一样,因此放入[]中
System.out.print(Arrays.toString(ai));//100
break;
}
}
}