最多能完成排序的块(Max Chunks To Make Sorted)详解与实现
📌 题目描述
给定一个长度为 n
的整数数组 arr
,它是 [0, n-1]
范围内所有整数的一个排列。我们可以将 arr
分割成若干个“块”,并对每个块进行独立排序,随后将它们连接起来。如果最终结果是整个数组的升序排列,求最多可以将 arr
分成多少个这样的块。
输入:
arr = [1, 0, 2, 3, 4]
输出:
2
解释:
可以分成两个块 [1, 0]
和 [2, 3, 4]
,分别排序后变成 [0, 1]
和 [2, 3, 4]
,拼接后是 [0, 1, 2, 3, 4]
,满足升序排列。
🔍 解题分析
这个问题考察的是贪心算法思想。我们不关心具体的排序过程,而是关注哪些位置可以“断开”成为一个独立的块。换句话说,在某个下标 i
,如果从起点到 i
的最大值等于 i
本身,说明 [