面試題59 II 佇列的最大值(中等題)

2021-10-03 14:48:49 字數 1180 閱讀 7896

題目描述:

請定義乙個佇列並實現函式 max_value 得到佇列裡的最大值,要求函式max_value、push_back 和 pop_front 的時間複雜度都是o(1)。

若隊列為空,pop_front 和 max_value 需要返回 -1

示例 1:

輸入:[「maxqueue」,「push_back」,「push_back」,「max_value」,「pop_front」,「max_value」]

[,[1],[2],,,]

輸出: [null,null,null,2,1,2]

示例 2:

輸入:[「maxqueue」,「pop_front」,「max_value」]

[,,]

輸出: [null,-1,-1]

限制:

1 <= push_back,pop_front,max_value的總算子 <= 10000

1 <= value <= 10^5

class

maxqueue

public

intmax_value()

return help.

peek()

;}public

void

push_back

(int value)

help.

add(value);}

public

intpop_front()

int p = que.

poll()

;if(help.

peek()

== p)

return p;

}}

思路概述:

乙個普通佇列que,乙個輔助作用的雙端佇列help

在新增元素時,que正常新增,help則不斷與末尾元素比較大小,如果末尾元素較小,則將末尾元素移除,當help為空或末尾元素比插入值大的時候,再將插入值新增到佇列中,是因為比如說佇列是5 2 1 6,那只要6沒有出隊之前,取最大值都是6

彈出元素時,que正常彈出並拿到彈出的值,如果和help的第乙個元素相等,則代表這個較大值已經出隊了,此時再將help的第乙個元素出隊

獲取最大值時,如果佇列不為空,則返回help的第乙個元素(不出隊,只獲取)

面試題59 II 佇列的最大值

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

面試題59 II 佇列的最大值

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

劍指 59 II 佇列中的最大值 難度中等

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