1. 程式人生 > >66. 加一

66. 加一

set 個數 urn ret 所表 tag 一個 num pan

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

// 最高位數字存放在數組的首位, 數組中每個元素只存儲一個數字。

// 你可以假設除了整數 0 之外,這個整數不會以零開頭。

// 示例 1:

// 輸入: [1,2,3]

// 輸出: [1,2,4]

// 解釋: 輸入數組表示數字 123。

// 示例 2:

// 輸入: [4,3,2,1]

// 輸出: [4,3,2,2]

// 解釋: 輸入數組表示數字 4321。

 1/**
2 * @param {number[]} digits
3 * @return {number[]}
4 */
5
6var plusOne = function(digits) {
7 var lastItem = digits[digits.length - 1]
8 // 最後一位不是 9
9 if(lastItem !== 9) {
10 digits[digits.length - 1] = lastItem + 1
11 }
12 // 最後一位是 9
13 else {
14 // 全是 9
15 if(new Set(digits).size === 1) {
16 for(var i=0; i<digits.length; i++) {
17 digits[i] = 0
18 }
19 digits.unshift(1)
20 }
21 // 有不是 9
22 else {
23 for(var i=digits.length-1; i>=0; i--) {
24 // 找到不是 9 的
25 if(digits[i] !== 9) {
26 digits[i] = digits[i] + 1
27 break
28 }
29 digits[i] = 0
30 }
31 }
32 }
33 return digits
34}

66. 加一