Medium
You are given an integer array nums with distinct elements.
A subarray nums[l...r] of nums is called a bowl if:
r - l + 1 >= 3.min(nums[l], nums[r]) > max(nums[l + 1], ..., nums[r - 1]).Return the number of bowl subarrays in nums.
Example 1:
Input: nums = [2,5,3,1,4]
Output: 2
Explanation:
The bowl subarrays are [3, 1, 4] and [5, 3, 1, 4].
[3, 1, 4] is a bowl because min(3, 4) = 3 > max(1) = 1.[5, 3, 1, 4] is a bowl because min(5, 4) = 4 > max(3, 1) = 3.Example 2:
Input: nums = [5,1,2,3,4]
Output: 3
Explanation:
The bowl subarrays are [5, 1, 2], [5, 1, 2, 3] and [5, 1, 2, 3, 4].
Example 3:
Input: nums = [1000000000,999999999,999999998]
Output: 0
Explanation:
No subarray is a bowl.
Constraints:
3 <= nums.length <= 1051 <= nums[i] <= 109nums consists of distinct elements.public class Solution {
public long bowlSubarrays(int[] nums) {
int n = nums.length;
int res = n;
int pre = 0;
for (int a : nums) {
if (a > pre) {
res--;
pre = a;
}
}
pre = 0;
for (int i = n - 1; i >= 0; i--) {
if (nums[i] > pre) {
res--;
pre = nums[i];
}
}
return res + 1L;
}
}