
解题步骤:





参考代码:
- 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;
- }
- };
你学会了吗???
-
相关阅读:
PHPStorm 常用设置
Oracle-控制文件及日志文件的管理
千兆光模块和万兆光模块的差别是什么?
【Java-----IO流(五)之数据流详解】
php伪协议 [ACTF2020 新生赛]Include1
闲置的华为悦盒搭建海思NAS&Ubuntu系统
第二次授课内容
【车载开发系列】UDS诊断---写入数据($0x2E)
vue父子组件通信方式
docker 获取Nvidia 镜像 | cuda |cudnn
-
原文地址:https://blog.csdn.net/weixin_70056514/article/details/133619351