给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。 该数字按照大小进行排列,最大的数在列表的最前面。
给定 [1,2,3] 表示 123, 返回 [1,2,4]. 给定 [9,9,9] 表示 999, 返回 [1,0,0,0].
从数组尾部开始执行+1运算并保存进位,在遍历运算中如无进位则可快速跳过。在计算结束后由是否有进位判断原数组长度是否发生变化,决定是否需要建立新数组。
public class Solution { /** * @param digits a number represented as an array of digits * @return the result */ public int[] plusOne(int[] digits) { int carries = 1; for (int i = digits.length-1;i>=0 && carries > 0; i--) { carries = (digits[i] + 1) / 10; digits[i] = (digits[i] + 1) % 10; } if (carries == 0) { return digits; } int[] result = new int[digits.length + 1]; result[0] = 1; System.arraycopy(digits,0,result,1,digits.length); return result; } }Last Update 2016.9.14