413. Arithmetic Slices
題目大意:找出數組中存在多少等差序列(該序列在原數組是連續的)
解題思路:
- 1,2,3 → 存在一個即1,2,3
- 1,2,3,4 →存在3個,即1,2,3;1,2,3,4; 2,3,4;在原來1,2,3的基礎上多了2個
- 1,2,3,4,5 → 存在6個,即1,2,3; 1,2,3,4; 2,3,4; 1,2,3,4,5; 2,3,4,5; 3,4,5;增加了3個
。。。。。。。
1,2,3,4,5....N: 存在 1+2+3+4+...+(N-3)個,所以只需要判斷連續的等差序列有多少項,在直接計算即可。
源代碼:
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
if(A.size()<3)
return 0;
int ans=0,temp=0;
for(int i=0;i<A.size()-2;i++)
{
if((A[i+1]-A[i])==(A[i+2]-A[i+1]))
temp++;
else
{
ans+=((1+temp)*temp/2);
temp=0;
}
}
ans+=((1+temp)*temp/2);
return ans;
}
};
以上