資料結構和演算法經典100題 第33題

2021-07-09 06:53:46 字數 908 閱讀 2183

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

題目要求:

給定陣列srr和整數num,返回共有多少滿足如下條件的子陣列?

max - min <= num

max表示陣列arr[i…j]中最大的值

min表示陣列arr[i…j]中最大的值

說明:

如果陣列的長度為n,請實現時間複雜度為o(n)的演算法

題目解析:

看此題前請看一下上一題33題。

因為發現木有啥人在看,所以直接給出**了:

no code say what:

int getnum(const

vector

&arr, const

int num)

int i = 0;

int j = 0;

int res = 0;

deque

qmax;

deque

qmin;

int len = (int)arr.size();

while (i < len)

qmin.push_back(j);

while (!qmax.empty() && arr[qmax.back()] < arr[j])

qmax.push_back(j);

if (arr[qmax.front()] - arr[qmin.front()] < num)

j++;

}if (qmax.front() == i)

if (qmin.front() == i)

res += j - i;

i++;

}return res;

}

路漫漫其修遠兮,吾將上下而求索…

資料結構和演算法經典100題 第27題

已知一棵二叉樹的每個節點的值都不同,給定這個二叉樹的先序和中序遍歷陣列,不要重建整棵二叉樹,而知通過給定的陣列直接生成正確的後序陣列。include include include include using namespace std int setpos int prearray,int pre...

資料結構和演算法經典100題 第28題

題目要求 表示一棵二叉樹中序遍歷結果,1.求有多少種可能的二叉樹結構?2.返回所有可能的二叉樹結構的頭結點?題目解析 1.乙個關鍵點是 中序遍歷一棵二叉樹結果有序無重複,那麼這棵二叉樹必然是搜尋二叉樹。根據搜尋二叉樹的性質,結點1一定沒有左子樹,所以結點1為頭結點可能的二叉樹結構數目取決於其右子樹的...

資料結構和演算法經典100題 第29題

題目要求 二叉樹節點間的最大距離問題從二叉樹的節點a出發,可以向上走或者向下走,但沿途的節點只能經過一次,當達到節點b時,路徑上的節點數叫作a到b的距離。比如 1 2 3 4 5 6 7節點4和節點2的距離為2,節點5和節點6的距離為5。現在給定一棵二叉樹的頭結點,求整棵二叉樹上節點間的最大距離。題...