佇列中取最大值操作問題

2021-07-02 01:19:41 字數 798 閱讀 3035

1、利用棧中o(1)的時間複雜度取最大值的思路,使用兩個棧構建乙個佇列;

2、然後取出兩個棧中的較大者即為佇列的最大值。

#include 

#include

#include

using

namespace

std;

class satckmax

else

}void pop()

datastack.pop();

maxstack.pop();

}int top()

else

}int max()

else

}bool empty()

protected:

private:

stack

datastack;

stack

maxstack;

};class queuemax

void pop()

}if (sb.empty())

sb.pop();

}int max()

if (sb.empty())

return (sa.max()>sa.max()? sa.max():sb.max());

}protected:

private:

satckmax sa;

satckmax sb;

};void test()

結果

2 2

3 3

3 3

0

程式設計之美 佇列中取最大值操作問題

思想就是入隊操作時,對最大值進行記錄。一種方法直接建立佇列,二種方法是利用2個棧實現佇列功能 詳見前面的文章 此處給出第一種方法 maxqueue.cpp 定義控制台應用程式的入口點。include stdafx.h includetypedef int type using namespace s...

程式設計之美 3 7 佇列中取最大值操作問題

1.簡述 假設有這樣乙個擁有3個操作的佇列 1.enqueue v 將v加入佇列中 2.dequeue 使佇列中的對首元素刪除並返回此元素 3.maxelement 返回佇列中的最大元素 請設計乙個資料結構和演算法,讓maxelement操作的時間複雜度盡可能的低。2.思路 起初沒仔細看,還以為與此...

佇列的最大值

題目 給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個 滑動視窗,它們的最大值分別為,include include include using namespace std templateclass queuewithmax voi...