Problem: 915. Partition Array into Disjoint Intervals 分割数组
分别求出左侧最大值,右侧最小值,然后从左到右两者比较,满足题意的索引就是答案
Code
class Solution { public: int partitionDisjoint(vector<int>& nums) { int mx = INT_MIN, mi = INT_MAX, n = nums.size(); vector<int> mxarr = nums, miarr = nums; for(int i = 1; i < n; i++) { mxarr[i] = max( mxarr[i-1], nums[i] ); } for(int i = n - 2; i>=0; i--) { miarr[i] = min( miarr[i+1], nums[i] ); } for(int i = 0; i < n-1; i++) { if(mxarr[i] <= miarr[i+1]) { return i + 1; } } return 1; } };