Arithmetic Slices LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number}
4
*/
5
var numberOfArithmeticSlices = function (nums) {
6
if (nums.length < 3) return 0;
7

8
const diff = [];
9

10
/* fill our array of differences */
11
for (let i = 1; i < nums.length; i++) {
12
diff.push(nums[i] - nums[i - 1]);
13
}
14

15
/* if the first two numbers of our difference array are equal
16
* then set our multiplier to 1
17
* and also set our "previous" variable to 1
18
* otherwise set both to 0 representing no sequence found yet
19
*/
20

21
let multiplier = diff[1] === diff[0] ? 1 : 0;
22
let dp = diff[1] === diff[0] ? 1 : 0; // our "previous" variable
23

24
/* loop thru our differences from idx 2 (0 and 1 have been
25
* accounted for),
26
* and check for continuing sequences
27
*/
28
for (let i = 2; i < diff.length; i++) {
29
if (diff[i] === diff[i - 1]) {
30
// if equal, increment our multiplier
31
multiplier++;
32
} else {
33
// if not equal, set our multiplier back to 0
34
multiplier = 0;
35
}
36

37
dp = dp + 1 * multiplier; // recurrence relation
38
}
39

40
return dp; // our "previous" variable
41
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0