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