66.加一
阿新 • • 發佈:2021-11-22
目錄
66.加一
題目
給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例1:
輸入:digits = [1,2,3]
輸出:[1,2,4]
解釋:輸入陣列表示數字 123。
示例2:
輸入:digits = [4,3,2,1]
輸出:[4,3,2,2]
解釋:輸入陣列表示數字 4321。
示例 3:
輸入:digits = [0]
輸出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/plus-one
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
題解
對於一個數+1,分為兩種情況
- 如果是9加1,那麼該位置i 置0,前一個位置i-1 加1
- 如果不是9,末尾正常+1
迴圈肯定是從後往前迴圈,大致的邏輯如下程式碼所示。
class Solution { public int[] plusOne(int[] digits) { int len = digits.length; int i; //從後往前遍歷 for(i=len-1;i>=0;i--){ if( digits[i]==9) { digits[i] =0 ; continue; }else{ digits[i] +=1; return digits; } } //執行到這裡說明是元素全是9的情況,元素個數改變了,所以我們要新建一個數組。 int [] result = new int [len+1]; result[0] = 1; //除了開頭是1其餘全是0可以使用預設值 //for(i=1;i<len+1;i++){ // result[i] = digits[i-1]; //} return result; } }