Re: [閒聊] 每日leetcode
看板Marginalman作者DJYOMIYAHINA (通通打死)時間10月前 (2025/02/08 20:27)推噓2(2推 0噓 1→)留言3則, 3人參與討論串1328/1552 (看更多)
針對出現過的number都maintain一個minheap
change的時候 只管把index push到對應的minheap
不去管被替代掉的數字的heap
只是find的時候
要去確認pop出的index位置 是不是真的是那個number
若否 則繼續pop到是為止
若heap空了就回傳-1
我也不知道為啥會想到這種方法
def __init__(self):
self.mp = defaultdict(list)
self.arr = {}
def change(self, index, number):
"""
:type index: int
:type number: int
:rtype: None
"""
heappush(self.mp[number], index)
self.arr[index] = number
return
def find(self, number):
"""
:type number: int
:rtype: int
"""
while len(self.mp[number]) != 0:
cur_idx = self.mp[number][0]
if cur_idx in self.arr and self.arr[cur_idx]==number:
return cur_idx
else:
heappop(self.mp[number])
return -1
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.229.37.69 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1739017657.A.920.html
→
02/08 20:28,
10月前
, 1F
02/08 20:28, 1F
推
02/08 20:28,
10月前
, 2F
02/08 20:28, 2F
推
02/08 20:29,
10月前
, 3F
02/08 20:29, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1328 之 1552 篇):