一、题目
这个问题和“最多能完成排序的块”相似,但给定数组中的元素可以重复,输入数组最大长度为2000,其中的元素最大为10**8。...然而,分成 [2, 1], [3], [4], [4] 可以得到最多的块数。
注意:
• arr的长度在[1, 2000]之间。
• arr[i]的大小在[0, 10**8]之间。...三、解题思路
3.1> 堆栈 + top指针
根据题意,我们要计算出最多的分组块数。...具体操作,如下图所示:
不过,需要注意的是,题目中要求获得的是最多的分组块数,所以,我们最终的分组情况应该是[2,1]、[4,3]、[7]和[8]这四组,才满足最多分组块数并且最终排序结果为[1,2,3,4,7,8...所以,我们将满足条件的组内最大值存入到堆栈中即可。