题目:leetcode链接
题意:求一串数字中有3个及以上连续数字组成的等差数列的个数。
例子:
[1,2,3,4] 组成的有3个分别是[1,2,3],[2,3,4],[1,2,3,4];
解题思路:
求出该数组中能有超过连续3个数组成等差数列的个数,然后再把每个等差数列进行拆分,求最终的个数。
具体代码实现:
public class Solution {
public int numberOfArithmeticSlices(int[] A) {
int result = 0;
int len = A.length;
if (len < 3) {
return 0;
}
List<Integer> list = new ArrayList<Integer>();
int interval = A[1] - A[0];
int flag = 2;
for (int i = 2; i < len; i++) {
int temp = A[i] - A[i - 1];
if (temp == interval) {
flag++;
if(i == len - 1){
list.add(flag);
}
} else {
if (flag > 2) {
list.add(flag);
}
flag = 2;
interval = temp;
}
}
int list_len = list.size();
for (int i = 0; i < list_len; i++) {
int t = (list.get(i) - 2) * (list.get(i) - 2 + 1)/2;
result += t;
}
return result;
}
}