力扣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; } };