Leetcode 3408 question
class TaskManager:
def __init__(self, tasks: List[List[int]]):
self.dict1=[]
self.task=tasks[:]
for i,j,k in self.task:
heapq.heappush(self.dict1,(-k,-j))
self.dict3={}
for i,j,k in self.task:
self.dict3[j]=k
self.dict2={}
for i,j,k in self.task:
self.dict2[j]=i
self.set1=set()
def add(self, userId: int, taskId: int, priority: int) -> None:
heapq.heappush(self.dict1,(-priority,-taskId))
self.dict3[taskId]=priority
self.dict2[taskId]=userId
if taskId in self.set1:
self.set1.discard(taskId)
def edit(self, taskId: int, newPriority: int) -> None:
heapq.heappush(self.dict1,(-newPriority,-taskId))
self.dict3[taskId]=newPriority
def rmv(self, taskId: int) -> None:
self.set1.add(taskId)
def execTop(self) -> int:
if not self.dict1:
return -1
(x,y)=heapq.heappop(self.dict1)
while -y in self.set1 or self.dict3[-y]!=-x:
if not self.dict1:
return -1
(x,y)=heapq.heappop(self.dict1)
# heapq.heappush(self.dict1,(x,y))
return self.dict2[-y]
# Your TaskManager object will be instantiated and called as such:
# obj = TaskManager(tasks)
# obj.add(userId,taskId,priority)
# obj.edit(taskId,newPriority)
# obj.rmv(taskId)
# param_4 = obj.execTop()