力扣2972.统计移除递增子数组的数目 II
-
类似1574.
- 核心都是定一边最大能取到的位置
- 定一边 移一边
- 当我们确定左右端点位置时 [i+1,j]是一定要删除的
- 然后i + 1这里可以一直缩小到0
- 也就是总共 i + 2个子数组
-
class Solution {public:long long incremovableSubarrayCount(vector<int>& nums) {int n = nums.size();long long res=0;int i = 0;while (i < n - 1 && nums[i] < nums[i + 1])i++;if(i == n-1) return (long long)n*(n+1)/2;res = i + 2;for(int j=n-1;j == n-1 || nums[j] < nums[j+1];j--){while(i >= 0 && nums[j] <= nums[i])i --;res += i + 2;}return res;}};