题目:915. 分割数组
思路:维护数组leftMaxs,记录每个位置的左侧最大值
class Solution {
public:
int partitionDisjoint(vector<int>& nums) {
int leftMax = INT_MIN;
int rightMin = INT_MAX;
int n=nums.size();
int res = n;
vector<int> leftMaxs(n,INT_MIN);
for(int i=0;i<n;i++){
leftMax = max(leftMax,nums[i]);
leftMaxs[i] = leftMax;
}
for(int i=n-1;i>=1;i--){
rightMin = min(rightMin,nums[i]);
if(leftMaxs[i-1]<=rightMin){
res = i;
}
}
return res;
}
};