PlusOne
问题描述:一个数组每一位代表一个数字的每一位。数字高位在数组的低位。求数字加1后得到新数组。
算法分析:要从数组的高位到低位进行遍历。
public class PlusOne { public int[] plusOne(int[] digits) { int len = digits.length; int carry = 0; digits[len-1] += 1; if(digits[len-1] >= 10) { digits[len-1] = digits[len-1]-10; carry = 1; } for(int i = len-2; i >=0 ; i --) { digits[i] += carry; if(digits[i] >= 10) { digits[i] = digits[i] - 10; carry = 1; } else { carry = 0; } } if(carry == 1) { int[] array = new int[len+1]; for(int i = len; i > 0; i --) { array[i] = digits[i-1]; } array[0] = 1; return array; } else { return digits; } } public int[] plusOne2(int[] digits) { int n = digits.length; for(int i = n-1; i >=0; i --) { if(digits[i] < 9) { digits[i]++; return digits; } digits[i] = 0; } int[] array = new int[n+1]; array[0] = 1; return array; } }