1 #define _for(i,a,b) for(int i = (a);i < (b);i ++)
2 class Solution
3 {
4 public:
5 int f(int len)
6 {
7 int sum = 0;
8 len -= 2;
9 _for(i,1,len+1)
10 sum += i;
11 return sum;
12 }
13 int numberOfArithmeticSlices(vector<int>& A)
14 {
15 int cur = 0;
16 if(A.size()<2)
17 return 0;
18
19 int rnt = 0;
20 _for(i,0,A.size())
21 {
22 if(!cur&&A[i]-A[i+1]==A[i+1]-A[i+2])
23 {
24 cur = 3;
25 i += 2;
26 }
27 else if(cur&&A[i]-A[i-1]==A[i-1]-A[i-2])
28 cur ++;
29 else
30 {
31 rnt += f(cur);
32 cur = 0;
33 if(!cur&&A[i]-A[i+1]==A[i+1]-A[i+2])
34 {
35 cur = 3;
36 i += 2;
37 }
38 }
39 }
40 rnt += f(cur);
41 return rnt;
42 }
43 };