給定乙個元素都是正整數的陣列a ,正整數 l 以及 r (l <= r)。
求連續、非空且其中最大元素滿足大於等於l 小於等於r的子陣列個數。
輸入:
a = [2, 1, 4, 3]
l = 2
r = 3
輸出: 3
解釋: 滿足條件的子陣列: [2], [2, 1], [3].
注意:
0~i區間中,儲存兩個位置,乙個是這段區間中第乙個符合要求的下標first,另乙個是這段區間中最後乙個符合要求的下標last
遍歷乙個元素時,如果符合要求,則last=下標,ans += last-first+1
小於l,ans += last-first+1
大於l,first、second = 下標+1,遍歷下乙個數
詳細過程見**
int
numsubarrayboundedmax
(vector<
int>
& a,
int l,
int r)
if(last >= first) cnt +
= last-first+1;
}else
if(a[i]
> r)
else
last = i;
cnt +
= last-first+1;
} i++;}
return cnt;
}
leetcode 34 區間查詢
一 題目 分析 首先,要求了時間複雜度o log n 說明暴力禁止 我們可以通過二分查詢法確定左右區間邊界 但是不能同時找出左右邊界,我們可以先確定左邊界,再確定右邊界 class solution public int findleft int nums,int target,int begin,...
leetcode56 區間合併
題目 給出乙個區間集合,求合併所有重疊後的區間。分析 區間處理先上套路,按左端點作第一維,右端點作第二維進行排序。依次考察每個區間,假設前面所有區間合併後是 left,right 若當前區間的左端點小於等於right,right max right,當前區間的右端點 否則說明有空格,將 left,r...
LeetCode 986 區間列表的交集
給定兩個由一些閉區間組成的列表,每個區間列表都是成對不相交的,並且已經排序。返回這兩個區間列表的交集。形式上,閉區間 a,b 其中 a b 表示實數 x 的集合,而 a x b。兩個閉區間的交集是一組實數,要麼為空集,要麼為閉區間。例如,1,3 和 2,4 的交集為 2,3 示例 輸入 a 0,2 ...