|
|
@@ -0,0 +1,19 @@
|
|
|
+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
|
|
|
+}
|