LeetCode-探索-初級-陣列-加一-java
阿新 • • 發佈:2018-12-30
加一
給定一個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例 1:
輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入陣列表示數字 123。
示例 2:
輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入陣列表示數字 4321。
比較簡單,通過判斷是否進位即可
需要注意的只有999這種情況,比較麻煩
public int[] plusOne(int[] digits) { boolean flag = digits[digits.length - 1] + 1 == 10; //若第一位發生進位 digits[digits.length - 1] = (digits[digits.length - 1] + 1) % 10; //更改第一位的值 if (!flag) //如果在個位不進位,直接返回 return digits; //由於個位不進位,則之後都不會產生進位 for (int i = digits.length - 2 ; i >= 0 ; i --) if (flag) { //進位 if ((digits[i] = (digits[i] + 1) % 10) == 0) flag = true; //本次還要進位,繼續迴圈 else //本次沒有進位,直接返回 return digits; } //end if //end for //此時還有一種情況,99999 if (flag) { //一直到最後一位還有進位 int[] result = new int[digits.length + 1]; System.arraycopy(digits, 0, result, 1, digits.length); result[0] = 1; return result; } //這種是非999的情況 return digits; }