66. Plus One

Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.

You may assume the integer do not contain any leading zero, except the number 0 itself.

The digits are stored such that the most significant digit is at the head of the list.


 
翻译:一个非负整数被表示为非空数组,给该整数加1.
除了0自己,其它整数都不以0开头
最高位存储在列表的最前面
 
大神答案
public int[] plusOne(int[] digits) {
        
    int n = digits.length;
    for(int i=n-1; i>=0; i--) {
        if(digits[i] < 9) {
            digits[i]++;
            return digits;
        }
        
        digits[i] = 0;//如果前面没有跳出,说明进位了,进位只能进1,所以这一位只能为0
    }
    
    int[] newNumber = new int [n+1];//若全都进位了,则除了第一位,都为0
    newNumber[0] = 1;
    
    return newNumber;
}
 
我的答案
考虑不仔细,误以为会有如8+7这种,所以选择了取余,其实只能是+1.。。。。。。

class Solution {
public int[] plusOne(int[] D) {

D[D.length-1]++;
for(int i=D.length-1;i>0;i--){
if(D[i]>9){
D[i]=D[i]%10;
D[i-1]++;
}
else
return D;
}
if (D[0]>9){
int[] N=new int[(D.length+1)];
N[0]=1;
for(int i=1;i<D.length+1;i++){
N[i]=D[i-1]%10;
}
return N;
}

return D;
}
}

posted @ 2018-01-20 17:46  同销万古愁  阅读(138)  评论(0编辑  收藏  举报