package day03;
/**
*
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
* @author JZWen
*
* 思路: 我的思路也是很简单,分成两种情况解决就可以
* 1、所有的都是9
* 2、else,
*
*/
public class Demo01 {
public static int [] fun(int[] digits) {
/**
* 排除所有都是9的情况
*/
if(isNine(digits)) {
int nums[] = new int[digits.length+1];
nums[0] = 1;
for(int i=1; i<digits.length+1; i++) {
nums[i] = 0;
}
return nums;
}
/**
* 先搞定个位数,因为个位数要+1 我不想在循环里面每次都判断一下
*/
int sign = 0;
int nums[] = new int[digits.length];
nums[digits.length-1] = (digits[digits.length-1]+1)%10;
sign = (digits[digits.length-1]+1)/10;
for(int i=digits.length-2; i>=0; i--) {
nums[i] = (digits[i]+sign)%10;
sign = (digits[i]+sign)/10;
}
return nums;
}
public static boolean isNine(int num[]) {
for(int i=0; i<num.length; i++) {
if(num[i]!=9) {
return false;
}
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int nums[] = {9,3,2,9};
int [] num = fun(nums);
for(int i=0; i<num.length; i++) {
System.out.println(num[i]);
}
}
}