数组:(加一)
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
方法1:
思想简单,不过有的时候不允许使用BigInteger,
public static int[] plusOne(int[] digits) {
String str = "";
for (int i = 0; i < digits.length; i++){
str += digits[i] ;
}
BigInteger bigInstance = new BigInteger(str); //实例化一个大数字
BigInteger add = bigInstance.add(new BigInteger("1"));
String strAddOne = add + "" ;
int[] arr = new int[strAddOne.length()];
for (int j =0; j < strAddOne.length(); j++){
arr[j] = Integer.parseInt(String.valueOf(strAddOne.charAt(j)));
System.out.println(arr[j]);
}
return arr;
}
方法2:
个人认为比较高级,需要记住!!!
public int[] plusOne(int[] digits) {
int length = digits.length;
for (int i = length - 1; i >= 0; i--) {
if (digits[i] != 9) {
//如果数组当前元素不等于9,直接加1
//然后直接返回
digits[i]++;
return digits;
} else {
//如果数组当前元素等于9,那么加1之后
//肯定会变为0,我们先让他变为0
digits[i] = 0;
}
}
//除非数组中的元素都是9,否则不会走到这一步,
//如果数组的元素都是9,我们只需要把数组的长度
//增加1,并且把数组的第一个元素置为1即可
int temp[] = new int[length + 1];
temp[0] = 1;
return temp;
}