413. 等差数列划分
解法一:暴力
int numberOfArithmeticSlices(vector<int>& A) {
int N = A.size();
int count = 0;
if (N < 3) return 0; //特殊情况处理
for (int i = 0; i < N-2; i++) { //遍历0到N-3的位置
if (A[i+1] - A[i] != A[i+2] - A[i+1]) continue; //A[i,i+1,i+2]不满足等差数列,直接跳过本次循环
int dist = A[i+1] - A[i]; //等差间距distance
count++; //找到一个等差
for (int j = i+3; j < N; j++) { //j从i+2之后找,看等差序列是否还存在后续
if (A[j] - A[j-1] != dist) break; //只要发现一个不等的,立即退出循环
count++;
}
}
return count;
}解法二:dp
最后更新于