最大值減去最小值小於或等於num的子陣列數量

2021-09-01 09:12:44 字數 847 閱讀 2992

給定陣列arr和整數num,共返回有多少個子陣列滿足如下情況:

max(arr[i…j]) - min(arr[i…j]) <= num

mar(arr[i…j])表示陣列arr[i…j]中的最大值,min(arr[i…j])表示子陣列arr[i…j]中的最小值。

如果陣列長度為n,請事先時間複雜度為*o(n)*的解法。

具體思路請參考書籍

#include

#include

using

namespace std;

intgetnum

(int

* arr,

int len,

int num)

if(qmin.

front()

== i)

qmin.

pop_front()

;if(qmax.

front()

== i)

qmax.

pop_front()

; res +

= j - i;

i++;}

return res;

}int

main()

; int num = 4;

int len = 9;*/

int input=

;int num =1;

int len =3;

int fres =

getnum

(input, len, num)

; cout << fres << endl;

getchar()

;return0;

}

最大值減去最小值小於或等於num的子陣列的數量

給定陣列arr和整數num,返回共有多少個子陣列滿足如下情況 max arr i.j min arr i.j num 要求 o n 實現。思路 使用兩個有序佇列 相對於有序棧來命名 qmax和qmin,分別維護arr i.j 的最大值和最小值更新結構。當子陣列a i.j 向右滑動乙個位置變成arr ...

最大值減去最小值小於或等於num的子陣列數量

給定陣列 arr 和整數 num,共返回有多少個子陣列滿足如下情況 max arr i j min arr i j num max arr i j 表示子陣列arr i j 中的最大值,min arr i j 表示子陣列arr i j 中的最小值。輸入描述 第一行輸入兩個數 n 和 num,其中 n...

最大值減去最小值小於或等於num的子陣列數量

說明 本文是左程雲老師所著的 程式設計師面試 指南 第一章中 最大值減去最小值小於或等於num的子陣列數量 這一題目的c 復現。感謝左程雲老師的支援。題目 給定陣列 arr 和整數 num,共返回多少個字陣列滿足如下情況 max arr i.j min arr i.j num max arr i.j...