一、Description:
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.
二、Ideas:
这道题的目的是得到将一个整数加一后结果的数组形式,可以从后往前遍历,记录是否有进位。注意,若最高位有进位,则需要将数组长度加长一位,若无进位则不用加长。
三、Code:
class Solution {
public int[] plusOne(int[] digits) {
int c=1;
int mark=0;
for(int i=digits.length-1;i>=0;i--){
if(c==0) break;
else{
digits[i]+=c;
if(digits[i]>=10){
digits[i]=digits[i]%10;
c=1;
if(i==0) mark=1;
}
else c=0;
}
}
if(mark==1){
int[] plus=new int[digits.length+1];
plus[0]=1;
for(int i=1;i<plus.length;i++) plus[i]=digits[i-1];
return plus;
}
else return digits;
}
}