2022-09-11:arr 是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”, 并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 我们最多能将数组分成
2022-09-11:arr 是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。我们最多能将数组分成多少块?示例 1:输入: arr = [5,4,3,2,1]输出: 1 解释:将数组分成 2 块或者更多块,都无法得到所需的结果。例如,分成 [5, 4], [3, 2, 1] 的结果是 [4, 5, 1, 2, 3],这不是有序的数组。示例 2:输入: arr = [2,1,3,4,4]输出: 4 解释:我们可以把它分成两块,例如 [2, 1], [3, 4, 4]。然而,分成 [2, 1], [3], [4], [4] 可以得到最多的块数。
答案 2022-09-11:
i 右边的最小值小于 max[0~i],不能分割;大于等于 max[0~i],可以分割。时间复杂度:O(N)。空间复杂度:O(N)。
代码用 rust 编写。代码如下:
复制代码
结果如下:
版权声明: 本文为 InfoQ 作者【福大大架构师每日一题】的原创文章。
原文链接:【http://xie.infoq.cn/article/24e4fd71a3178b208741e5fe2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论