題目描述
給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。
最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例:
輸入:
輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入數組表示數字 123。
思路
1.我們可以從數組的最后一位開始加一,加一后將值與10進行mod運算,若取模后等于0,說明要進行進位操作,繼續進行循環即可;若不等于0,說明不需要進位,直接返回即可。
2.若我們從循環出來后還未返回結果,說明還需要進位操作,我們初始化一個長度比之前數組大一的新數組,然后將數組的第一個位置賦值為1即可,因為數組的默認值是0,是與原數組相同的。
Java代碼實現
public int[] plusOne(int[] digits) {
int len = digits.length;
for(int i=len-1;i>=0;i--){
digits[i] = digits[i] + 1;
digits[i] = digits[i]%10;
if(digits[i] != 0)
return digits;
}
digits = new int[len + 1];
digits[0] = 1;
return digits;
}