769. 最多能完成排序的块
# 769. 最多能完成排序的块
给定一个长度为 n 的整数数组 arr ,它表示在 [0, n - 1] 范围内的整数的排列。
我们将 arr 分割成若干 块 (即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。
返回数组能分成的最多块数量。
示例 1:
输入: arr = [4,3,2,1,0] |
示例 2:
输入: arr = [1,0,2,3,4] |
提示:
- n == arr.length
- 1 <= n <= 10
- 0 <= arr[i] < n
- arr 中每个元素都 不同
# 题解
其实只要理解题意,这道题很简单,无非就是要我们依次找出数组前缀排序后与原数组排序后相同;又因为数组中的数为 [0,n-1] 并且只有 n 个数,那么一定不会重复;因此我们只需要找出当前前缀最大值和前缀最后一位下标是否相等即可。
class Solution { |
复杂度分析:
- 时间复杂度:$O (n)$
- 空间复杂度:$O (1)$
Invitation
x-17
202111170521
created:2021/11/17
Welcome to X
月缺不改光,剑折不改钢
共矜然诺心,各负纵横志
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 潇十七!
评论