如果一個(gè)數(shù)列至少有三個(gè)元素渠羞,并且任意兩個(gè)相鄰元素之差相同徽龟,則稱該數(shù)列為等差數(shù)列。
例如器瘪,以下數(shù)列為等差數(shù)列:
1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9
以下數(shù)列不是等差數(shù)列。
1, 1, 2, 5, 7
數(shù)組 A 包含 N 個(gè)數(shù)赁咙,且索引從0開(kāi)始今野。數(shù)組 A 的一個(gè)子數(shù)組劃分為數(shù)組 (P, Q),P 與 Q 是整數(shù)且滿足 0<=P<Q<N 饺鹃。
如果滿足以下條件莫秆,則稱子數(shù)組(P, Q)為等差數(shù)組:
元素 A[P], A[p + 1], ..., A[Q - 1], A[Q] 是等差的。并且 P + 1 < Q 悔详。
函數(shù)要返回?cái)?shù)組 A 中所有為等差數(shù)組的子數(shù)組個(gè)數(shù)镊屎。
示例:
A = [1, 2, 3, 4]
返回: 3, A 中有三個(gè)子等差數(shù)組: [1, 2, 3], [2, 3, 4] 以及自身 [1, 2, 3, 4]。
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& nums) {
if(nums.size()<3)
return 0;
int l=nums.size();
vector<int> dp(l,0);
int result=0;
for(int i=2;i<l;i++)
{
if(nums[i]-nums[i-1]==nums[i-1]-nums[i-2])
{
dp[i]=dp[i-1]+1;
result+=dp[i];
}
}
return result;
}
};