Arithmetic Slices II - Subsequence LeetCode solution in JavaScript

1
/**
2
* @param {number[]} nums
3
* @return {number}
4
*/
5
var numberOfArithmeticSlices = function (nums) {
6
let dp = new Array(nums.length);
7
for (let i = 0; i < nums.length; i++) {
8
dp[i] = new Map();
9
}
10
let ans = 0;
11
for (let j = 1; j < nums.length; j++) {
12
for (let i = 0; i < j; i++) {
13
let commonDifference = nums[j] - nums[i];
14
if (
15
commonDifference > Math.pow(2, 31) - 1 ||
16
commonDifference < -Math.pow(2, 31)
17
) {
18
continue;
19
}
20
let apsEndingAtI = dp[i].get(commonDifference) || 0;
21
let apsEndingAtJ = dp[j].get(commonDifference) || 0;
22

23
dp[j].set(commonDifference, apsEndingAtI + apsEndingAtJ + 1);
24
ans += apsEndingAtI;
25
}
26
}
27
return ans;
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0