class Solution {
public:
int numberOfArithmeticSlices(vector<int> &nums) {
int ans = 0;
int n = nums.size();
vector<unordered_map<long long, int>> f(n);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < i; ++j) {
long long d = 1LL * nums[i] - nums[j];
auto it = f[j].find(d);
int cnt = it == f[j].end() ? 0 : it->second;
ans += cnt;
f[i][d] += cnt + 1;
}
}
return ans;
}
};
相关文章
- 09-30【C++算法】6.双指针_有效三角形的个数-C++ 算法代码:
- 09-30设计模式之代理模式
- 09-30Android常用C++特性之std::this_thread-std::this_thread::yield
- 09-30王道-数据结构-1 设数组data[m]作为循环队列的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为____ 答案:D 解析:队列的头指针指向队首元素的实际位置,因此出队操作后,头指针需向上移动一个元素的位置。循环队列的容量为m,所以头指针front加1以后,需对m取余,使之自动实现循环,即当front取到最大下标(m-1处)以后,自动循环回来取0值。所以答案是D。 1 若已知一个栈的入栈序列是1,2,3,…,30,其输出序列是p1,p2,p3,…,pn,若p1=30,则p10为_______ 答案:D
- 09-30Qt/C++开发经验
- 09-30C++系列-模版
- 09-30IPv6常见问题解答
- 09-30动态规划算法:10.路径问题_地下城游戏_C++
- 09-30C++不同的头文件中各种函数的操作使用(长期更新,找到新的就补充进来)
- 09-30C++ | Leetcode C++题解之第446题等差数列划分II-子序列-题解: