您的位置:首页 > 其它

笔试题9. LeetCode OJ (9) Arithmetic Slices

2017-01-14 18:50 176 查看


题目的意思是:给你一串数字(至少3个),其中的一串数字(子串——3个或者3个以上数字组成)相邻两个数字之间的差两两相等,那么这串数字就是“Arithmetic Slices”——“算数片”,请计算一串数字中的“算数片”。

class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
int len=A.size();
if(len<3){
return 0;
}
int cnt=0;
vector<int> dp(len,0);
for(int i=1;i<len-1;i++){
if(A[i+1]-A[i]==A[i]-A[i-1])
dp[i]=dp[i-1]+1;
cnt+=dp[i];
}
return cnt;
}
};


最为关键的就是“ dp[i]=dp[i-1]+1;”这个语句,就是每当串长度加1的时候,整个“算数片”数量会加dp[i-1]+1个,这是整道题目的关键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: