首页 > 试题广场 >

最多能完成排序的块

[编程题]最多能完成排序的块
  • 热度指数:164 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个子数组),并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。请问我们最多能将数组分成多少块?

示例1

输入

[5,4,3,2,1]

输出

1

说明

将数组分成2块或者更多块,都无法得到所需的结果。例如,分成[5, 4], [3, 2, 1]的结果是[4, 5, 1, 2, 3],这不是有序的数组。

示例2

输入

[2,1,3,4,4]

输出

4

说明

我们可以把它分成两块,例如[2, 1], [3, 4, 4]。然而,分成[2, 1], [3], [4], [4]可以得到最多的块数。