leetcode-Easy-第13期-陣列-Plus One
題目:
Given a non-empty array of digits representing a non-negative integer, plus one to the integer.The digits are stored such that the most significant digit is at the head of the list, and each element in the array contain a single digit.You may assume the integer does not contain any leading zero, except the number 0 itself.
題目看了好幾遍才明白到底要問什麼...就是給你一個:非空陣列,元素都是正數的陣列,然後將數組裡面的元素看成一個整數,比如[1,2,3,4]陣列整數就是1234,然後將這個整數加上1後得到的結果是多少,還是用陣列表示
- 例1:
陣列:[1,2,3,4] 1234 + 1= 1235 結果用陣列表示:[1,2,3,5]
- 例2:
陣列:[1,2,9,9] 1239 + 1= 1300 結果用陣列表示:[1,3,3,0]
- 例3:
陣列:[9,9,9,9] 1239 + 1= 10000 結果用陣列表示:[1,0,0,0,0]
- 思路
三種情況: 1 最後一位小於9,直接加1返回2 2 不是所有數字都為9,所以遍歷到的那一位加1大於10,向前進1,當前位變0 3 所有數字都是9,全部變為0,然後最左邊新增一個元素1
- 解法
var plusOne = function(arr) { const len= digits.length - 1; for(let i = len; i >= 0; i--){ // 如果當前遍歷到的元素小於9那麼加上1以後,就結束返回結果即可 if(digits[i] < 9){ digits[i] += 1; return digits; //當前 } // 第當前位加1大於10,那麼當前位變為0,下一位進1 digits[i] = 0 } //上面沒有return,執行到這裡表明所有元素都為9 //所以給陣列首位新增一個1 digits.unshift(1); return digits; };