【LeetCode刷題記錄】 - 加一
阿新 • • 發佈:2020-12-09
加一
給定一個由 整數 組成的 非空 陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 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
- 將陣列轉成字串
- 將String轉換成Long
- 再將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
- 從後往前取值
- 遇到值不等於9,則加一,返回。
- 遇到值等於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;
}
}