您的位置:首页 > 其它

leetcode 66: Plus One

2016-03-16 21:56 399 查看

Question:

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

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

题目描述:

给定一个非负数 用数组表示。对数字加一。数组的最高位在列表首元位置。

解题思路:

从最低位开始,对最低位元素+1,若和小于10则返回;否则上一位进1,以此反复知道最高位进1,若最高位+1后结果大于10,则开辟一个n+1的数组空间,最高位为1。

代码实现

public class Solution {
public int[] plusOne(int[] digits) {
if(digits==null||digits.length==0)
return null;
int carry = 1;
int length = digits.length;
for(int i = length-1;i>=0;--i){
int sum = carry + digits[i];
digits[i] = sum%10;
carry = sum/10;
if(carry == 0)
return digits;
}
int[] a = new int[length+1];
System.arraycopy(digits,0,a,1,length);
a[0] = carry;
return a;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode