[LeetCode] 66. Plus One

从右往左扫,判断digits[i]是不是9,两种情况

第一种情况,如果是就把digits[i]变为0,直至扫完数组;

第二种情况,就正常+1,退出循环,返回数组。

若是第一种情况,在最后需要开一个新数组,作相关操作即可,参见代码。

 1 /**
 2  * @param {number[]} digits
 3  * @return {number[]}
 4  */
 5 var plusOne = function(digits) {
 6     // corner case
 7     const len = digits.length;
 8     if (digits == null || len === 0) {
 9         return digits;
10     }
11 
12     // normal case
13     for (let i = len - 1; i >= 0; i--) {
14         if (digits[i] < 9) {
15             digits[i]++;
16             return digits;
17         } else {
18             digits[i] = 0;
19         }
20     }
21     let res = new Array(len + 1);
22     res[0] = 1;
23     for (let j = 1; j < res.length; j++) {
24         res[j] = 0;
25     }
26     return res;
27 };

 

你可能感兴趣的:([LeetCode] 66. Plus One)