# 413.等差数列划分

## 问题描述
[413.等差数列划分](https://leetcode.cn/problems/arithmetic-slices/)

## 解题思路
注意到子数组个数$cnt = len - 3 + 1 + len - 4 + 1 + ... + 1$，其中`len`是等差数组的长度，则`cnt = (n - 1) * (n - 2) / 2`，每次遍历找出连续的等差数组的长度即可。
测试`test`

## 代码
```cpp
class Solution {
  public:
    int numberOfArithmeticSlices(vector<int> &nums) {
        if (nums.size() < 3)
            return 0;
        int dif = nums[1] - nums[0];
        int len = 2;
        int cnt = 0;
        for (int i = 2; i < nums.size(); i++) {
            if (nums[i] - nums[i - 1] == dif)
                len++;
            else {
                if (len >= 3)
                    cnt += (len - 2) * (len - 1) / 2;
                len = 2;
                dif = nums[i] - nums[i - 1];
            }
        }
        if (len >= 3)
            cnt += (len - 2) * (len - 1) / 2;
        return cnt;
    }
};
```

