雙棧佇列實現快速獲取佇列最大值最小值

2021-09-06 22:41:17 字數 832 閱讀 8368

1 思路:

自己實現乙個棧,其中成員為標準庫中的棧,乙個存放全部的元素,乙個存放最小元素,乙個存放最大元素。

使用自己實現的棧來實現乙個求最大值最小值的佇列,其中包含兩個成員,乙個作為出隊的棧,乙個作為入隊的棧。

2 c++實現**:

#include#include

#include

using

namespace

std;

template

class

minmaxstack

size_t size()

void push(int

x)

void

pop()

intgetmin()

intgetmax()

inttop()

private

: stack

st;stack

minstack;

stack

maxstack;

};template

class

myqueue

size_t size()

intgetmax()

intgetmin()

void push(int

x)

void

pop()

}out.pop();

}private

: minmaxstack

in; minmaxstack

out;};

intmain()

cout

cout

}

快速得到棧 佇列的最大值

特點 棧 先進後出 佇列 後進先出 思路 1.快速得到最大值的棧 結構 需要兩個陣列 乙個陣列stackitem儲存棧的元素,另乙個陣列link2nextmaxvalueindex儲存下乙個最大值的位置 兩個指標 乙個為stacktop指向棧頂,另乙個為maxvalueindex指向最大值的下標 操...

棧 佇列 佇列的最大值

請定義乙個佇列並實現函式max value得到佇列裡的最大值,要求函式max value push back和pop front的均攤時間複雜度都是o 1 若隊列為空,pop front和max value需要返回 1。示例1 輸入 maxqueue push back push back max ...

佇列和棧 064 滑動視窗的最大值 雙端佇列

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 方法一 class solution def maxinwindows self,num,size write code h...