給定陣列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...