auto commit
This commit is contained in:
parent
cb20aadfef
commit
f5293e88a1
@ -269,13 +269,35 @@ class NumArray {
|
||||
[413. Arithmetic Slices (Medium)](https://leetcode.com/problems/arithmetic-slices/description/)
|
||||
|
||||
```html
|
||||
A = [1, 2, 3, 4]
|
||||
return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.
|
||||
A = [0, 1, 2, 3, 4]
|
||||
|
||||
return: 6, for 3 arithmetic slices in A:
|
||||
|
||||
[0, 1, 2],
|
||||
[1, 2, 3],
|
||||
[0, 1, 2, 3],
|
||||
[0, 1, 2, 3, 4],
|
||||
[ 1, 2, 3, 4],
|
||||
[2, 3, 4]
|
||||
```
|
||||
|
||||
dp[i] 表示以 A[i] 为结尾的等差递增子区间的个数。
|
||||
|
||||
在 A[i] - A[i - 1] == A[i - 1] - A[i - 2] 的条件下,{A[i - 2], A[i - 1], A[i]} 是一个等差递增子区间。如果 {A[i - 3], A[i - 2], A[i - 1]} 是一个等差递增子区间,那么 {A[i - 3], A[i - 2], A[i - 1], A[i]} 也是等差递增子区间,dp[i] = dp[i-1] + 1。
|
||||
当 A[i] - A[i-1] == A[i-1] - A[i-2],那么 [A[i-2], A[i-1], A[i]] 构成一个等差递增子区间。而且在以 A[i-1] 为结尾的递增子区间的后面再加上一个 A[i],一样可以构成新的递增子区间。
|
||||
|
||||
```html
|
||||
dp[2] = 1
|
||||
[0, 1, 2]
|
||||
dp[3] = dp[2] + 1 = 2
|
||||
[0, 1, 2, 3], // [0, 1, 2] 之后加一个 3
|
||||
[1, 2, 3] // 新的递增子区间
|
||||
dp[4] = dp[3] + 1 = 3
|
||||
[0, 1, 2, 3, 4], // [0, 1, 2, 3] 之后加一个 4
|
||||
[1, 2, 3, 4], // [1, 2, 3] 之后加一个 4
|
||||
[2, 3, 4] // 新的递增子区间
|
||||
```
|
||||
|
||||
综上,在 A[i] - A[i-1] == A[i-1] - A[i-2] 时,dp[i] = dp[i-1] + 1。
|
||||
|
||||
```java
|
||||
public int numberOfArithmeticSlices(int[] A) {
|
||||
|
@ -269,13 +269,35 @@ class NumArray {
|
||||
[413. Arithmetic Slices (Medium)](https://leetcode.com/problems/arithmetic-slices/description/)
|
||||
|
||||
```html
|
||||
A = [1, 2, 3, 4]
|
||||
return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.
|
||||
A = [0, 1, 2, 3, 4]
|
||||
|
||||
return: 6, for 3 arithmetic slices in A:
|
||||
|
||||
[0, 1, 2],
|
||||
[1, 2, 3],
|
||||
[0, 1, 2, 3],
|
||||
[0, 1, 2, 3, 4],
|
||||
[ 1, 2, 3, 4],
|
||||
[2, 3, 4]
|
||||
```
|
||||
|
||||
dp[i] 表示以 A[i] 为结尾的等差递增子区间的个数。
|
||||
|
||||
在 A[i] - A[i - 1] == A[i - 1] - A[i - 2] 的条件下,{A[i - 2], A[i - 1], A[i]} 是一个等差递增子区间。如果 {A[i - 3], A[i - 2], A[i - 1]} 是一个等差递增子区间,那么 {A[i - 3], A[i - 2], A[i - 1], A[i]} 也是等差递增子区间,dp[i] = dp[i-1] + 1。
|
||||
当 A[i] - A[i-1] == A[i-1] - A[i-2],那么 [A[i-2], A[i-1], A[i]] 构成一个等差递增子区间。而且在以 A[i-1] 为结尾的递增子区间的后面再加上一个 A[i],一样可以构成新的递增子区间。
|
||||
|
||||
```html
|
||||
dp[2] = 1
|
||||
[0, 1, 2]
|
||||
dp[3] = dp[2] + 1 = 2
|
||||
[0, 1, 2, 3], // [0, 1, 2] 之后加一个 3
|
||||
[1, 2, 3] // 新的递增子区间
|
||||
dp[4] = dp[3] + 1 = 3
|
||||
[0, 1, 2, 3, 4], // [0, 1, 2, 3] 之后加一个 4
|
||||
[1, 2, 3, 4], // [1, 2, 3] 之后加一个 4
|
||||
[2, 3, 4] // 新的递增子区间
|
||||
```
|
||||
|
||||
综上,在 A[i] - A[i-1] == A[i-1] - A[i-2] 时,dp[i] = dp[i-1] + 1。
|
||||
|
||||
```java
|
||||
public int numberOfArithmeticSlices(int[] A) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user