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