Leetcode 795 區間子陣列個數 C

2021-10-08 21:32:19 字數 795 閱讀 4962

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