Skip to content

Commit

Permalink
Update 1043.partition-array-for-maximum-sum.md
Browse files Browse the repository at this point in the history
  • Loading branch information
azl397985856 authored Apr 19, 2023
1 parent f42d727 commit b5e1975
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions problems/1043.partition-array-for-maximum-sum.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ https://leetcode-cn.com/problems/partition-array-for-maximum-sum/

具体来说:

- 我们可以枚举所有的 i,然后计算区间 [i:j] 的可能区间和,其中 j 的取值范围是 [i:i+k]
- 我们可以枚举所有的 i,然后计算区间 [i:j] 的区间和,其中 j 的取值范围是 [i:i+k]

> 当我们求出来的时候, 就继续使用同样的方法计算剩下子数组的区间和,并将其加起来就是答案。也就是说我们将问题规模缩小了,继续使用同样的方法直到问题缩小到寻常即可。使用递归可以轻松达到这一点。
- 如何对区间求和呢? 其实也容易,只需要用一个变量 max_ele 记录区间最大值(这在遍历的时候可以同时取得),然后当前区间对答案的贡献就是 max_ele \* (j-i+1) ,其中 j - i + 1 为区间的长度。
- 这样我们就算出了区间 [i:j] 的区间和。 这 k 个区间和([i:i+1], [i:i+2]...[i:i+k])的最大值就是我们想要找的子问题答案。
- 接下来我们只要求剩下的子数组的答案即可。也就是说我们将问题规模缩小了,继续使用同样的方法直到问题缩小到寻常即可。使用递归可以轻松达到这一点。
- 这样我们就算出了区间 [i:j] 的区间和。 这 k 种分割区间的方式([i:i+1], [i:i+2]...[i:i+k])的最大值就是我们想要找的子问题答案。

### 代码

Expand Down

0 comments on commit b5e1975

Please sign in to comment.