-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathplus-one.js
73 lines (66 loc) · 1.51 KB
/
plus-one.js
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
* Source: https://leetcode.com/problems/plus-one/
* Tags: [Array,Math]
* Level: Easy
* Title: Plus One
* Auther: @imcoddy
* Content: Given a non-negative number represented as an array of digits, plus one to the number.
*
* The digits are stored such that the most significant digit is at the head of the list.
*/
/**
* @param {number[]} digits
* @return {number[]}
*/
/**
* Memo:
* Complex: O(n)
* Runtime: 108ms
* Tests: 120 test cases passed
* Rank: S
* Updated: 2015-11-09
*/
var plusOne = function(digits) {
var length = digits.length;
var index = length - 1;
digits[index] = digits[index] + 1;
if (digits[index] === 10) {
while (index >= 0 && digits[index] === 10) {
index--;
digits[index] += 1;
digits[index + 1] = 0;
}
}
if (digits[0] === 10) {
digits[0] = 0;
digits.unshift(1);
}
return digits;
};
/**
* Memo:
* Complex: O(n)
* Runtime: 132ms
* Tests: 108 test cases passed
* Rank: S
* Updated: 2015-11-10
*/
var plusOne = function(digits) {
var i = digits.length - 1;
digits[i] = digits[i] + 1;
while (digits[i] === 10 && i > 0) {
digits[--i] += 1;
digits[i + 1] = 0;
}
if (digits[0] === 10) {
digits[0] = 0;
digits.unshift(1);
}
return digits;
};
console.log(plusOne([0]));
console.log(plusOne([1]));
console.log(plusOne([9]));
console.log(plusOne([1, 9]));
console.log(plusOne([3, 9, 9]));
console.log(plusOne([9, 9, 9, 9]));