769. 最多能完成排序的块
题目描述:给定一个长度为 n 的整数数组 arr ,它表示在 [0, n - 1] 范围内的整数的排列。
我们将 arr 分割成若干 块 (即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。
返回数组能分成的最多块数量。
要点
- n == arr.length
- 1 <= n <= 10
- 0 <= arr[i] < n
- arr 中每个元素都 不同
算法思路
因为给定数组是不重复数组,且范围在1-10,所以在从左至右分块时,块的最大值是当前块的索引下标值,因此只要从左至右判断最大值是不是等于下标索引,等于下标索引即分块加1
class Solution:
def maxChunksToSorted(self, arr: List[int]) -> int:
res=0
m=0.0
for a in range(len(arr)):
m = max(m, arr[a])#统计前i个位置的最大元素
if (m == a):#判断最大元素值是否等于下标值
res=res+1
return res
本文介绍了一种算法,用于解决将数组分割成多个块,每个块内部排序后整体仍保持升序的问题。通过遍历数组,寻找可以分割的位置,最终得出最大块数量。
401

被折叠的 条评论
为什么被折叠?



