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 }