LeetCode 413. Arithmetic Slices [Medium]
阿新 • • 發佈:2018-12-11
原題地址
題目內容
題目分析
A[i]-A[i+1] = A[i+1]-A[i+2],這樣的式子成為arithmetic,也就是等差數列,題目的意思為,給你一個數組,問最多能分為多少個等差數列,每個數列至少含有3個數字。
一開始想用動態規劃的方法,但後面發現暴力求解也挺簡單的,就過了。對於每一個A[i]都求出從i開頭能分割多少組等差數列出來,然後tot++,一旦不行就從i+1開始繼續分,最後返回tot即可。
程式碼實現
class Solution {
public:
int numberOfArithmeticSlices(vector<int >& A) {
if(A.size() < 3){
return 0;
}
int tot = 0;
for(int i = 0; i < A.size()-2; i++){
int j = i;
while((A[j+1]-A[j] == A[j+2]-A[j+1]) && j+2 < A.size()){
j++;
tot++;
}
}
return tot;
}
};