LintCode之加一

題目描述:git

 

分析:由樣例能夠知道,當數組的每個數字都是9時,加一會產生一個最高位的數字1,因此先判斷這個數組的每一位是否都是9,若是是,那麼新數組的大小是原數組大小加一,不然新數組的大小等於原數組的大小。數字加一,其實也就是數組的最後一個數字加一,可是加一的時候可能會產生進位(9+1=10:就產生了向前一位的進位),用一個數字k表示向前一位的進位(k=1:向前產生了進位,k=0:沒有產生進位)由此加到原數組的第一個數字爲止,若是最高位也就是原數組的第一位也產生了進位,那麼將新數組的第一位置爲1。數組

代碼:spa

 1 public class Solution {
 2     /*
 3      * @param digits: a number represented as an array of digits
 4      * @return: the result
 5      */
 6     public int[] plusOne(int[] digits) {
 7         // write your code here
 8         if(digits.length == 0 || digits == null) {
 9             return null;
10         }
11         int[] num = null;
12         
13         int i;
14         //判斷數組的每位數字是否都是9
15         for(i=0; i<digits.length; i++) {
16             if(digits[i] != 9) {
17                 break;
18             }
19         }
20         if(i == digits.length) {
21             num = new int[digits.length+1];
22         }else {
23            num = new int[digits.length];
24         }
25 
26         int n = num.length-1;
27         //k表示低位向高位的進位
28         int k = 1;
29         for(int j=digits.length-1; j>=0; j--) {
30             num[n--] = (digits[j]+k)%10;
31             k = (digits[j]+k)/10;
32         }
33         if(k == 1) {
34             num[n] = k;
35         }
36         
37        
38         
39         return num;
40     }
41 }
相關文章
相關標籤/搜索