2025-08-21 10:26:07 +0000 UTC
Online Election
Categories:
Links
Code
class TopVotedCandidate:
def __init__(self, persons: List[int], times: List[int]):
self._lead = times
freqs = [0] * 5001
prev = persons[0]
freqs[prev] = 1
times[0] = (times[0], prev)
for i in range(1, len(times)):
person = persons[i]
freq = freqs[person] + 1
freqs[person] = freq
if freq >= freqs[prev]:
prev = person
times[i] = (times[i], prev)
def q(self, t: int) -> int:
left, right = 0, len(self._lead) - 1
res = None
while left <= right:
mid = left + (right - left) // 2
lead_time, lead_person = self._lead[mid]
if lead_time > t:
right = mid - 1
elif lead_time == t:
return lead_person
else:
res = lead_person
left = mid + 1
return res
# Your TopVotedCandidate object will be instantiated and called as such:
# obj = TopVotedCandidate(persons, times)
# param_1 = obj.q(t)