Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5a384e2

Browse files
author
robot
committed
2 parents 923b4c2 + 583cc44 commit 5a384e2

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

‎problems/768.max-chunks-to-make-sorted-ii.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ arr[i]的大小在[0, 10**8]之间。
5959

6060
这里有一个关键点: **如果两个数组的计数信息是一致的,那么两个数组排序后的结果也是一致的。** 如果你理解计数排序,应该明白我的意思。不明白也没有关系, 我稍微解释一下你就懂了。
6161

62-
如果我把一个数组打乱,然后排序,得到的数组一定是确定的,即不管你怎么打乱排好序都是一个确定的有序序列。这个论点的正确性是毋庸置疑的。而实际上,一个数组无论怎么打乱,其计数结果也是确定的,这也是毋庸置疑的。反之,如果是两个不同的数组,打乱排序后的结果一定是不同的,计数也是同理。
62+
如果我把一个数组打乱,然后排序,得到的数组一定是确定的,即不管你怎么打乱排好序都是一个确定的有序序列。这个论点的正确性是毋庸置疑的。而实际上,一个数组无论怎么打乱,其计数结果也是确定的,这也是毋庸置疑的。反之,如果是两个排序后不同的数组,打乱排序后的结果一定是不同的,计数也是同理。
6363

6464
![](https://p.ipic.vip/i9mrda.jpg)
6565
(这两个数组排序后的结果以及计数信息是一致的)
@@ -68,7 +68,7 @@ arr[i]的大小在[0, 10**8]之间。
6868

6969
- 先排序 arr,不妨记排序后的 arr 为 sorted_arr
7070
- 从左到右遍历 arr,比如遍历到了索引为 i 的元素,其中 0 <= i < len(arr)
71-
- 如果 arr[:i+1] 的计数信息和 sorted_arr[:i+1] 的计数信息一致,那么说明可以分桶,否则不可以
71+
- 如果 arr[:i+1] 的计数信息和 sorted_arr[:i+1] 的计数信息一致,那么说明可以**贪心地**切分,否则一定不可以分割
7272

7373
> arr[:i+1] 指的是 arr 的切片,从索引 0 到 索引 i 的一个切片。
7474
@@ -197,6 +197,8 @@ class Solution(object):
197197

198198
比如 [2,1,3,4,4],遍历到 1 的时候会发现 1 比 2 小,因此 2, 1 需要在一块,我们可以将 2 和 1 融合,并**重新压回栈**。那么融合成 1 还是 2 呢?答案是 2,因为 2 是瓶颈,这提示我们可以用一个递增栈来完成。
199199

200+
> 为什么 2 是瓶颈?因此我们需要确保当前值一定比前面所有的值的最大值还要大。因此只需要保留最大值就好了,最大值就是瓶颈。而 1 和 2 的最大值是 2,因此 2 就是瓶颈。
201+
200202
因此本质上**栈存储的每一个元素就代表一个块,而栈里面的每一个元素的值就是块的最大值**
201203

202204
[2,1,3,4,4] 来说, stack 的变化过程大概是:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /