實現 freqstack,模擬類似棧的資料結構的操作的乙個類。
freqstack 有兩個函式:
push(int x),將整數 x 推入棧中。
pop(),它移除並返回棧**現最頻繁的元素。
如果最頻繁的元素不只乙個,則移除並返回最接近棧頂的元素。
示例:輸入:
[「freqstack」,「push」,「push」,「push」,「push」,「push」,「push」,「pop」,「pop」,「pop」,「pop」],
[,[5],[7],[5],[7],[4],[5],,,,]
輸出:[null,null,null,null,null,null,null,5,7,5,4]
解釋:執行六次 .push 操作後,棧自底向上為 [5,7,5,7,4,5]。然後:
pop() -> 返回 5,因為 5 是出現頻率最高的。
棧變成 [5,7,5,7,4]。
pop() -> 返回 7,因為 5 和 7 都是頻率最高的,但 7 最接近棧頂。
棧變成 [5,7,5,4]。
pop() -> 返回 5 。
棧變成 [5,7,4]。
pop() -> 返回 4 。
棧變成 [5,7]。
對 freqstack.push(int x) 的呼叫中 0 <= x <= 10^9。
如果棧的元素數目為零,則保證不會呼叫 freqstack.pop()。
單個測試樣例中,對 freqstack.push 的總呼叫次數不會超過 10000。
單個測試樣例中,對 freqstack.pop 的總呼叫次數不會超過 10000。
所有測試樣例中,對 freqstack.push 和 freqstack.pop 的總呼叫次數不會超過 150000。
很簡單的思路:
【【】,【】,【】,【】…】出現頻率1,2,3,4…的集合,每次刪除從最後乙個集合中刪除元素,新增元素的時候放入正確頻率的小集合當中
class
freqstack
:def
__init__
(self)
: self.datas =
defpush
(self, x:
int)
->
none
:if self.datas is
none
: temp =
[x]else
: temp =
false
for i in
range(0
,len
(self.datas)):
if x not
in self.datas[i]
: self.datas[i]
temp =
true
break
ifnot temp:
[x])
defpop
(self)
->
int:
ifnot self.datas[
len(self.datas)-1
]:self.datas.pop(-1
)return self.datas[
len(self.datas)-1
].pop(-1
)# your freqstack object will be instantiated and called as such:
# obj = freqstack()
# obj.push(x)
# param_2 = obj.pop()
leetcode 895 最大頻率棧
題目描述 實現 freqstack,模擬類似棧的資料結構的操作的乙個類。freqstack 有兩個函式 push int x 將整數 x 推入棧中。pop 它移除並返回棧 現最頻繁的元素。如果最頻繁的元素不只乙個,則移除並返回最接近棧頂的元素。示例 輸入 freqstack push push pu...
leetcode5225最大相等頻率
正整數陣列nums,找到滿足條件的最長字首,返回其長度。該字首滿足 刪除乙個元素後,剩下的每個數字出現的次數相同。ps 如果刪除後沒有元素存在,也可以認為每個數字有相同的次數。陣列長度 2,105 元素值 2,105 在遍歷陣列的過程中,計算每個數字的頻率對映val2freq,再統計頻率的頻率。對於...
LeetCode1224 最大相等頻率 思維
給出乙個正整數陣列 nums,請你幫忙從該陣列中找出能滿足下面要求的 最長 字首,並返回其長度 從字首中 刪除乙個 元素後,使得所剩下的每個數字的出現次數相同。如果刪除這個元素後沒有剩餘元素存在,仍可認為每個數字都具有相同的出現次數 也就是 0 次 示例 1 輸入 nums 2,2,1,1,5,3,...