Description
给定一个长度为
Constraints
Solution
想到一个不好做的递推公式:设
那改一改:设
另外注意一下是求全部序列而不是只求
Code
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& nums) {
// NOTE
using L = long long;
// dp: len(seq) > 1
// ans: len(seq) > 2
unordered_map<L, int> dp[1003];
int ans = 0;
for(int i = 0; i < nums.size(); ++i) {
for(int j = 0; j < i; ++j) {
auto d = L(nums[i]) - nums[j];
auto iter = dp[j].find(d);
auto v = iter != dp[i-1].end() ?
iter->second : 0;
// v: {any seq, nums[i]}
// 1: {nums[j], nums[i]}
dp[i][d] += v + 1;
ans += v;
}
}
return ans;
}
};