多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading zero, except the number 0 itself. The digits are stored such that the most significant digit is at the head of the list. ~~~ public class Solution { public int[] plusOne(int[] digits) { int carry = 0, i = digits.length-1; digits[i]+=1; while(digits[i]>=10){ digits[i--]-=10; if(i>=0) digits[i]+=1; else { carry =1; break; } } if(carry ==0) return digits; int[] res = new int[digits.length+1]; for(i=0; i<digits.length;i++){ res[i+1] = digits[i]; } res[0]=1; return res; } } public class Solution { public int[] plusOne(int[] digits) { int length; length = digits.length; for(int i = length-1; i>=0; i--){ if(digits[i]<9){ digits[i]++; break; }else{ digits[i]=0; } } int[] newdigits; if(digits[0]==0){ newdigits = new int[digits.length+1]; newdigits[0]=1; for(int i=1;i<newdigits.length;i++){ newdigits[i]=digits[i-1]; } }else{ newdigits = new int[digits.length]; for(int i=0;i<digits.length;i++){ newdigits[i]=digits[i]; } } return newdigits; } } 先对原数组进行处理。从数组最后一位开始往前检查,如果当前数字是<9的,说明你加1无需进位,从循环跳出即可,如果当前数字等于9,说明加1涉及进位,且加1后当前数字应记为0,继续循环处理。 当对原数组处理完后,还需要判断当前第0位是不是已经变为0了,如果已经变为0了说明是类似99+1这种,需要进位。其他则不需要。 一般对数字进行操作的题都要考虑边界,尤其是溢出问题。 ~~~