
thì suy luận ra là nó sẽ luôn bắt đầu từ mút left hoặc right đó, nhưng mà implement khósort lại, mỗi i thì xét ở l hất lên, hoặc r hất về, ko xét ở giữa

thì dùng queue dq gì đó thôi bác, out khoảng thì poll ra, nằm trọn trong khoảng thì để nguyên, trùng thì poll ra rồi push lại cái đoạn trùngthì suy luận ra là nó sẽ luôn bắt đầu từ mút left hoặc right đó, nhưng mà implement khó![]()
nó sẽ luôn start từ mút left hoặc right của một index trong coins, cái này suy luận bằng tham lam,chỗ này sao kg xét ở giữa vậy bác
ừ dùng queue lướt có vẻ ngon hơn binary search, binary search khó chịu quáthì dùng queue dq gì đó thôi bác, out khoảng thì poll ra, nằm trọn trong khoảng thì để nguyên, trùng thì poll ra rồi push lại cái đoạn trùng


Check này ở đâu vậy bácXem tệp đính kèm 2864063
3 tuần này ko học thuật toán gì, 2Q gang vẫn được lên điểm trở lại Knight dog![]()
q3 dạo này nhìn có vẻ ko căng lắm là tầm lúc còn 30p chỉ có 500 người giải dc. nhớ cái đợt trước q3 toàn 3-4k thằng giải dcCon mẹ giải đc 2/4 cả 2 bài contests mà vẫn lên được guardian, thật nhục nhã
Bài 3 đi sliding windows phải là start at l và end at r mới đúng, mình đi sliding windows start at l và start at r sai sml![]()
via theNEXTvoz for iPhone
có roadmap cho newbie không bác ơi,e yếu toán quáRoad map là nhấc mông lên, học 30 ngày liên tục 1 ngày 2 tiếng rồi tính tiếp nhé bác
via theNEXTvoz for iPhone
Neetcode 150 nhé bác, k cần giỏi toáncó roadmap cho newbie không bác ơi,e yếu toán quá
, cứ nghĩ ko bị update cái user id mà có cái case nó xoá rồi add lại thành ra bị update cái user id.
def execTop(self) -> int:
while self.heap:
priority, taskId, userId = heapq.heappop(self.heap)
taskId = -taskId
if taskId in self.taskIds and -priority == self.taskIds[taskId][1] and userId == self.taskIds[taskId][0]:
del self.taskIds[taskId]
return userId
return -1