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
| class Solution { public int numberOfArithmeticSlices(int[] nums) { if (nums.length < 3) { return 0; }
int n = nums.length;
List<Map<Long, Integer>> dp = new ArrayList<>(n); for (int i = 0; i < n; i++) { dp.add(new HashMap<>()); }
int count = 0; for (int i = 1; i < n; i++) { for (int j = 0; j < i; j++) { long diff = (long)nums[i] - nums[j]; dp.get(i).put(diff, dp.get(i).getOrDefault(diff, 0) + dp.get(j).getOrDefault(diff, 0) + 1);
count += dp.get(j).getOrDefault(diff, 0); } }
return count; } }
|
References
446. Arithmetic Slices II - Subsequence