
解题步骤:





参考代码:
- 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;
- }
- };
你学会了吗???
-
相关阅读:
HCNP Routing&Switching之MUX VLAN
计算机组成与结构
推荐十个优秀的ASP.NET Core第三方中间件,你用过几个?
C++初阶:C++入门
第十届山东省大学生网络安全技能大赛【神秘的base】【小试牛刀】
web开发概述——Servelt技术
某城商银行生产容器云平台详细设计方案分享及经验总结
Transformer:开源机器学习项目,上千种预训练模型 | 开源日报 No.66
一键智能改写文案怎么做,4个方法教你轻松搞定
NC20242 [SCOI2005]最大子矩阵
-
原文地址:https://blog.csdn.net/weixin_70056514/article/details/133619351