# Arithmetic Slices Problem

## Description

LeetCode Problem 413.

An integer array is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.

- For example, [1,3,5,7,9], [7,7,7,7], and [3,-1,-5,-9] are arithmetic sequences.

Given an integer array nums, return the number of arithmetic subarrays of nums.

A subarray is a contiguous subsequence of the array.

Example 1:

1
2
3

Input: nums = [1,2,3,4]
Output: 3
Explanation: We have 3 arithmetic slices in nums: [1, 2, 3], [2, 3, 4] and [1,2,3,4] itself.

Example 2:

1
2

Input: nums = [1]
Output: 0

Constraints:

- 1 <= nums.length <= 5000
- -1000 <= nums[i] <= 1000

## Sample C++ Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

class Solution {
public:
int numberOfArithmeticSlices(vector<int>& nums) {
if (nums.size() < 3)
return 0;
int cnt = 0, diff = 0 , ind = 0;
int prev_diff = nums[1] - nums[0];
for (int i = 1; i<nums.size()-1 ; ++i) {
// curr difference
int diff = nums[i+1] - nums[i];
// if we find same diff of consecutive elements
// increase count
if (diff == prev_diff)
++ind;
else {
// update prev diff with curr diff
// as we don't find consecutive elements with same diff
prev_diff = diff;
ind = 0;
}
// add cosecutive arithmetic sequence cnt
cnt += ind;
}
return cnt;
}
};