/* * 66. Plus One * 12.5 by Mingyang * 不用把array返回来,直接加 * 首先是我的代码,我就是全部走了一遍,老老实实一个一个的处理 * 这么就会慢一点 */ public int[] plusOne1(int[] digits) { int len=digits.length; if(len==0||digits==null) return null; int add=1; boolean hasMore=false; for(int i=len-1;i>=0;i--){ int temp=add+digits[i]; digits[i]=temp%10; add=temp/10==0?0:1; } if(add==0){ return digits; } int[] res=new int[len+1]; res[0]=1; for(int i=1;i<res.length;i++){ res[i]=digits[i-1]; } return res; } /* * 这个网上流行的代码就更好,因为只有加1超过10的情况我才继续加加 * 否则就不需要进行讨论,直接break掉 * 两个代码效率很不一样的 */ 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; //等于9 } } 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; }