# LeetCode 446. Arithmetic Slices II - Subsequence

## 题目要求

A sequence of numbers is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.

For example, these are arithmetic sequences:

1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9
The following sequence is not arithmetic.

1, 1, 2, 5, 7

A zero-indexed array A consisting of N numbers is given. A subsequence slice of that array is any sequence of integers (P0, P1, …, Pk) such that 0 ≤ P0 < P1 < … < Pk < N.

A subsequence slice (P0, P1, …, Pk) of array A is called arithmetic if the sequence A[P0], A[P1], …, A[Pk-1], A[Pk] is arithmetic. In particular, this means that k ≥ 2.

The function should return the number of arithmetic subsequence slices in the array A.

The input contains N integers. Every integer is in the range of -231 and 231-1 and 0 ≤ N ≤ 1000. The output is guaranteed to be less than 231-1.

Example:

Input: [2, 4, 6, 8, 10]

Output: 7

Explanation:
All arithmetic subsequence slices are:
[2,4,6]
[4,6,8]
[6,8,10]
[2,4,6,8]
[4,6,8,10]
[2,4,6,8,10]
[2,6,10]
Subscribe to see which companies asked this question

## 解题代码

    public int numberOfArithmeticSlices(int[] A) {
int re = 0;
HashMap<Integer, HashMap<Long, Integer>> diffMaps = new HashMap<>();
for (int i = 0; i < A.length; i++) {
HashMap<Long, Integer> diffMap = new HashMap<>();
diffMaps.put(i, diffMap);
int num = A[i];
for (int j = 0; j < i; j++) {
if ((long) num - A[j] > Integer.MAX_VALUE)
continue;
if ((long) num - A[j] < Integer.MIN_VALUE)
continue;
long diff = (long) num - A[j];
int count = diffMaps.get(j).getOrDefault(diff, 0);
diffMaps.get(i).put(diff, diffMaps.get(i).getOrDefault(diff, 0) + count + 1);
re += count;
}
}
return re;
}
• 本文已收录于以下专栏：

## LeetCode 446. Arithmetic Slices II - Subsequence

• u013007900
• 2016年11月24日 15:54
• 643

## LeetCode 446. Arithmetic Slices II - Subsequence

Problem Statement(Source) A sequence of numbers is called arithmetic if it consists of at least thre...
• junchen1992
• 2016年11月06日 10:30
• 1993

## Leetcode-446. Arithmetic Slices II - Subsequence

• caoyan_12727
• 2016年12月06日 20:52
• 514

## LeetCode 446. Arithmetic Slices II - Subsequence

**问题描述：** A sequence of numbers is called arithmetic if it consists of at least three element...
• u010370157
• 2017年06月28日 21:52
• 67

## 动态规划/leetcode/直接推导递推公式

• m0_37693059
• 2017年09月02日 00:03
• 273

## 446. Arithmetic Slices II - Subsequence

A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff...
• wdlsjdl2
• 2016年11月13日 09:51
• 187

## 446. Arithmetic Slices II - Subsequence***

A sequence of numbers is called arithmetic if it consists of at least three elements and if the diff...
• alwaystry
• 2016年12月11日 12:43
• 94

## LeetCode 446. Arithmetic Slices II - Subsequence

LeetCode 446. Arithmetic Slices II - Subsequence
• luzheqi
• 2016年11月17日 10:13
• 843

## Interleaving String -- LeetCode

• linhuanmars
• 2014年04月29日 04:28
• 9875

## [LeetCode]446. Arithmetic Slices II - Subsequence

https://leetcode.com/problems/arithmetic-slices-ii-subsequence/#/description 找到乱序数组中所有gap相同的子序列个数...
• gqk289
• 2017年03月15日 11:46
• 136

举报原因： 您举报文章：LeetCode 446. Arithmetic Slices II - Subsequence 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)