Arithmetic Slices II - Subsequence LeetCode solution in C++

1
class Solution {
2
public:
3
int numberOfArithmeticSlices(vector<int> &nums) {
4
int n = nums.size(), ans = 0;
5
unordered_map<long long, unordered_map<int, int>> ma; // [diff, [index, count]]
6
unordered_map<int, int> k;
7
for (int i = 1; i < n; i++) {
8
for (int j = 0; j < i; j++) {
9
long long diff = (long long)nums[i] - (long long)nums[j];
10
if (ma.find(diff) == ma.end()) ma[diff] = k;
11
if (ma[diff].find(j) == ma[diff].end()) ma[diff][j] = 0;
12
ma[diff][i] += ma[diff][j] + 1;
13
ans += ma[diff][j];
14
}
15
}
16
return ans;
17
}
18
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0