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.
原问题链接:https://leetcode.com/problems/plus-one/
?
这个问题比较简单,从原来的描述里可以看到,它的最高位保存在数组的最开头。所以如果要对这个数字加1的话,需要从末尾开始向前累加。需要注意的问题是可能会导致进位。所以一种办法是先声明一个列表,每次将数字相加的元素放到这里,一直加到最后。然后再将这个列表反转过来再返回结果就可以了。
详细实现如下:
?
public class Solution {
public int[] plusOne(int[] digits) {
List<Integer> list = new ArrayList<>();
int carry = 1;
for(int i = digits.length - 1; i >= 0; i--) {
int tmp = digits[i] + carry;
carry = tmp / 10;
list.add(tmp % 10);
}
if(carry != 0) list.add(carry);
Collections.reverse(list);
int[] result = new int[list.size()];
for(int i = 0; i < list.size(); i++) result[i] = list.get(i);
return result;
}
}
?
原文:http://shmilyaw-hotmail-com.iteye.com/blog/2302035