题号:66 题目
分析:这道题目本身不难,也是常见的面试题之一。
题目的意思是有一个数组,其中存放的都是数字,给这个数组加1,求结果。这相当于把一个数的每一位都看做是数组的一个元素,给这个数加1,得到新的数。我们从后往前进行遍历,如果有进位一次向前一位加1,直到没有进位的时候返回数组即可。但是,要注意如果数组中所有的元素都是9的话,这是最坏的情况,每一步都需要进位,这时候定义一个新的数组用来存放结果。
代码如下:
/**
* @Date:2015-3-13
* @author:renxiao
* */
public class Solution {
public int[] plusOne(int[] digits) {
if(digits==null||digits.length==0) return digits;
int one=1;
//从后往前遍历
int i=digits.length-1;
while(i>=0){
int carry=(digits[i]+one)/10;
int digit=(digits[i]+one)%10;
digits[i]=digit;
if(carry==0) return digits;
else i--;
}
int[] newDigits=new int[digits.length+1];
newDigits[0]=1;
for(int j=1;j<newDigits.length;j++){
newDigits[j]=0;
}
return newDigits;
}
}