[LeetCode] #66 Plus One 解題
題型解說
這是一題難度為簡單的題目
需要設計一個方法,此方法會傳入一個整數陣列 digits
將這個陣列看作一串數字的組合,把數字 + 1 後回傳
範例:
digits = [1,2,3],則回傳 [1,2,4],因為 123 + 1 = 124
解題思路
一開始走了彎路,寫了很多判斷和使用 List 來應付位數增加的情況
後來研究其他人的寫法後才恍然大悟,因為忽略了一個很簡單的事實
位數增加的情況就只會是 9、99、999、9999...等等
加上 1 後變成 10 100 1000 10000,也就只有這個情況位數才會增加
只要其中一位數不是 9 ,就可以直接回傳了
程式碼
Java
class Solution {
public int[] plusOne(int[] digits) {
for (int i = digits.length - 1; i > -1; i--) {
if (digits[i] < 9) {
digits[i]++;
return digits;
}
digits[i] = 0;
}
// 只有全部的位數都是 9 的情況才會跑完迴圈,故只要將第一位變成 1 就好
int[] result = new int [digits.length + 1];
result[0] = 1;
return result;
}
}