題目描述:
請定義乙個佇列並實現函式 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 ...