1. 程式人生 > 其它 >66.加一

66.加一

目錄

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;

    }
}