题目描述
给定一个数组 nums ,将其划分为两个连续子数组 left 和 right, 使得:
left 中的每个元素都小于或等于 right 中的每个元素。
left 和 right 都是非空的。
left 的长度要尽可能小。
在完成这样的分组后返回 left 的 长度 。
用例可以保证存在这样的划分方法。
示例 1:
输入:nums = [5,0,3,8,6]
输出:3
解释:left = [5,0,3],right = [8,6]
示例 2:
输入:nums = [1,1,1,0,6,12]
输出:4
解释:left = [1,1,1,0],right = [6,12]
提示:
2 <= nums.length <= 105
0 <= nums[i] <= 106
可以保证至少有一种方法能够按题目所描述的那样对 nums 进行划分。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/partition-array-into-disjoint-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
构造两个长度为n的数组,一个数组存储的是该位置之前的最大值,一个数组存储的该位置的之后的最小值。然后比较连个数组,找到右边的最小值 大于左边的最大值的位置
- 第一次很简单的设想拿左面数组部分的最大值和右面数组部分的最小值比较,如果最大值小于或等于最小值,那么就可以输出下标+1作为位置。
就是缩进真的很重要
参考博主地址:https://blog.csdn.net/qq_38156298/article/details/98377494