1. 程式人生 > >【LeetCode 66】加一

【LeetCode 66】加一

題目描述:
給定一個由整陣列成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存一個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。

程式碼實現

package com.bupt.wwy;

public class Main {

    public static void main(String[] args) {
	// write your code here
        int[] arr = {1, 2, 3};
        Solution s = new Solution();
        int[] res = s.plusOne(arr);
        for (int i=0;i<res.length;i++){
            System.out.print(res[i]);
        }
    }
}

class Solution{
    public int[] plusOne(int[] digits){
        boolean flag = true;
        for (int i=0;i<digits.length;i++){
            if (digits[i] != 9){
                flag = false;
                break;
            }// 只要有一位不為9,那麼陣列的長度就不會改變
        }
        if (flag){ // 陣列元素都為9,陣列長度會增加一位
            int[] result = new int[digits.length+1];
            result[0] = 1;// 將新陣列的首元素設定為1,其餘位置預設為0
            return result;
        }else {
            for (int i=digits.length-1;i>=0;i--){
                if (digits[i]!=9){
                    digits[i]+=1;
                    break;
                }else {
                    digits[i]=0;
                }
            }
        }
        return digits;
    }
}