[Leetcode]66. Plus One

66. Plus One

題目連結
難易度:Easy

Given a non-empty array of decimal digits representing a non-negative integer, increment 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 contains a single digit.
You may assume the integer does not contain any leading zero, except the number 0 itself.

Example 1:

1
2
3
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.

Example 2:

1
2
3
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.

Example 3:

1
2
Input: digits = [0]
Output: [1]

Constraints:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

Concept

Loop the digits in inverse order, calculate the sum for the current number, record the carry if the sum is over than 10, and append the carry when the loop meets the last number.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* @param {number[]} digits
* @return {number[]}
*/
var plusOne = function(digits) {
let result = [];
let carry = 0;
for(let i = digits.length-1; i>=0 ; i--){
const curNum = digits[i];
let sumNum = i === digits.length-1 ? curNum + 1: curNum;
if(carry) {
sumNum += carry;
carry = 0;
}
if(sumNum > 9) {
sumNum = 0;
carry = 1;
}
result.unshift(sumNum);
if(carry && i === 0){
result.unshift(carry);
}

}
return result;
};