您的位置:首页 > 其它

[Leetcode] 413. Arithmetic Slices

2017-01-12 15:11 281 查看
题目: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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode