12345678910111213141516171819 |
- func numberOfArithmeticSlices(A []int) (cnt int) {
- n := len(A)
- if n < 3 {
- return
- }
- dp := make([]map[int]int, n)
- for i := 0; i < n; i++ {
- dp[i] = make(map[int]int)
- }
- for i := 1; i < n; i++ {
- for j := 0; j < i; j++ {
- diff := A[i] - A[j]
- inc := dp[j][diff] + 1
- cnt += inc - 1
- dp[i][diff] = dp[i][diff] + inc
- }
- }
- return
- }
|