123456789101112131415161718 |
- func numberOfArithmeticSlices(A []int) (res int) {
- n := len(A)
- if n <= 2 {
- return 0
- }
- diff, cnt := A[1]-A[0], 2
- for i := 2; i < n; i++ {
- if A[i]-A[i-1] == diff {
- cnt++
- } else {
- // 1 + ... + cnt-2
- res += (cnt - 1) * (cnt - 2) / 2
- diff = A[i] - A[i-1]
- cnt = 2
- }
- }
- return res + (cnt-1)*(cnt-2)/2
- }
|