来水一题
class Solution {
public:
int numberOfArithmeticSlices(vector<int>& A) {
if (A.size() < 3)
return 0;
int counts=0;
vector<bool>visited(A.size(), false);
for (int i = 0; i < A.size()-2; i++) {
if (visited[i] == false) {
int delta = A[i + 1] - A[i];
int count = 1;
for (int j = i + 1; j < A.size(); j++) {
if (A[j] - A[j - 1] == delta) {
count++;
visited[j] = true;
}
else
break;
}
if (count >= 3) //可以省略
counts += (count - 1)*(count - 2) / 2;
else
visited[i + 1] = false;
}
}
return counts;
}
};
本文提供了一段C++代码,用于解决一个特定的算法问题:计算给定整数数组中所有可能的等差数列切片的数量。通过遍历数组并检查相邻元素之间的差值是否一致来识别等差数列。该算法适用于数组大小大于等于3的情况。
243

被折叠的 条评论
为什么被折叠?



