1. 程式人生 > 其它 >【LeetCode刷題記錄】 - 加一

【LeetCode刷題記錄】 - 加一

技術標籤:Java刷題leetcode資料結構java

加一

給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。

你可以假設除了整數 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

個人思路1

  1. 將陣列轉成字串
  2. 將String轉換成Long
  3. 再將Long轉換成陣列
class Solution {
    public int[] plusOne(int[] digits) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int digit : digits) {
            stringBuilder.append(digit);
        }
        Long digit = Long.valueOf
(stringBuilder.toString()); digit += 1; String stringResult = String.valueOf(digit); int length = stringResult.length(); int[] result = new int[length]; for (int i = 0; i < length; i++) { result[i] = Integer.valueOf(String.valueOf(stringResult.
charAt(i))); } return result; } }

結果:失敗

在這裡插入圖片描述

個人思路2

  1. 從後往前取值
  2. 遇到值不等於9,則加一,返回。
  3. 遇到值等於9,則改此值
class Solution {
    public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
        	// 不等於9,加一返回
            if (digits[i] != 9) {
                digits[i] += 1;
                return digits;
            }
            // 等於9,修改為0
            digits[i] = 0;
        }
        // 給的陣列中所有下標對應的值都為9,則初始化新的陣列,首位為1,其餘皆為0
        int[] result = new int[digits.length + 1];
        result[0] = 1;
        return result;
    }
}

參考

LeetCode - 加一