給定乙個元素都是正整數的陣列a ,正整數 l 以及 r (l <= r)。
求連續、非空且其中最大元素滿足大於等於l 小於等於r的子陣列個數。
例如 :
輸入:
a = [2, 1, 4, 3]
l = 2
r = 3
輸出: 3
解釋: 滿足條件的子陣列: [2], [2, 1], [3].
注意:
l, r 和 a[i] 都是整數,範圍在 [0, 10^9]。
陣列 a 的長度範圍在[1, 50000]。
思路分
析:\color
思路分析
:這道題如果正面處理會有點複雜,因為需要同時滿足最大元素滿足大於等於l 小於等於r,蛋式我們可以將它拆分開來。因為子陣列中最大的元素maxele只有三種情況,第一種maxele < l,第二種maxele >= l && maxele <= r,第三種maxele > r,所以
最大元素滿足大於等於l小於等於r的子陣列個數 = 最大元素小於等於r的子陣列個數 - 最大元素小於等於l - 1的子陣列個數
這樣我們只要求出最大元素小於等於r的子陣列個數
和最大元素小於等於l - 1的子陣列個數
,然後相減即可。
class
solution
//求出最大元素不超過maxele的子陣列個數
intmyfunc
(vector<
int>
& a,
int maxele)
if(index != asize)
//長度為1的子陣列length個,長度為2的子陣列length - 1個 .... 長度為length的子陣列1個
Leetcode 795 區間子陣列個數 C
給定乙個元素都是正整數的陣列a 正整數 l 以及 r l r 求連續 非空且其中最大元素滿足大於等於l 小於等於r的子陣列個數。輸入 a 2,1,4,3 l 2 r 3 輸出 3 解釋 滿足條件的子陣列 2 2,1 3 注意 0 i區間中,儲存兩個位置,乙個是這段區間中第乙個符合要求的下標first...
leetcode 最長回文子串行 區間dp
給定乙個字串s,找到其中最長的回文子串行。可以假設s的最大長度為1000。示例 1 輸入 bbbab 輸出 4 乙個可能的最長回文子串行為 bbbb 示例 2 輸入 cbbd 輸出 2 乙個可能的最長回文子串行為 bb 其實關於回文的dp基本都是區間dp.因為回文左右都要考慮,並且是從裡往外推。狀態...
LeetCode 435 不重疊的區間個數
給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1,2 1,...