915.Partition Array into Disjoint Intervals
915. Partition Array into Disjoint Intervals
给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:
left 中的每个元素都小于或等于 right 中的每个元素。 left 和 right 都是非空的。 left 要尽可能小。 在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。
示例 1:
示例 2:
方法: 要解决最短left子数组的问题,即要找一个临界点,左边的数的最大值都小于右边所有的数。
首先将
A[0]
设为max,将起始点设为1,然后比较右边所有的元素,如果有小于max的,则跳出循环内层循环结束,如果已经遍历结束,则说明该起始点为所求临界点。
否则起始点自增,并判断起始点值是否大于max,如果是,则刷新max值为起始点值。继续循环判断。
起始点到达终点后,返回-1。
Last updated