LeetCode 區間子陣列個數

2021-09-22 16:27:43 字數 1124 閱讀 9014

給定乙個元素都是正整數的陣列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,...