[Leetcode] 413. Arithmetic Slices

来源:互联网 发布:中老年人学英语软件 编辑:程序博客网 时间:2024/05/01 13:15

题目: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;    }}
0 0
原创粉丝点击