
解题步骤:





参考代码:
- class Solution {
- public:
- int numberOfArithmeticSlices(vector<int>& nums) {
- int n=nums.size();
-
- //把元素和它对应的所有下标绑定存放到哈希表中
- unordered_map<double,vector<int>> hash;
- for(int i=0;i
- {
- hash[nums[i]].push_back(i);
- }
-
- //dp表的值全是0,无需初始化
-
- //填表
- vector
int>> dp(n,vector<int>(n)); - int ret=0;
- for(int j=2;j
- {
- for(int i=1;i
- {
- double b=nums[i];
- double c=nums[j];
- double a=2*b-c;
- if(hash.count(a))
- {
- for(const auto& k:hash[a])
- {
- //符合题意的k对应的dp[k][i]都要加等到dp[i][j]上
- if(k
- {
- dp[i][j]+=dp[k][i]+1;
- }
- //后面的下标一定都是大于等于i的
- else
- {
- break;
- }
- }
- //统计次数
- ret+=dp[i][j];
- }
- }
- }
-
- //返回值
- return ret;
- }
- };
你学会了吗???
-
相关阅读:
【GAN入门】生成 AI的概念
制作一个简单HTML校园网页(HTML+CSS)学校网站制作 校园网站设计与实现
智能制造工厂刀具使用RFID产线管理系统的重要性
面试经典-Spring篇
LeetCode Cookbook 数组习题(1)
jsonata工具查询JSON和转换
206. 反转链表
java---贪心---货仓选址(每日一道算法2022.11.5)
Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础
MySQL 中的反斜杠 \\,我上当了
-
原文地址:https://blog.csdn.net/weixin_70056514/article/details/133619351