Untitled
unknown
python
2 years ago
748 B
48
Indexable
def count_active_caches_optimized(cache, time):
events = []
for start, ttl in cache:
events.append((start, 1))
events.append((start + ttl, -1))
events.sort()
active_caches = []
active_count = 0
for time_point, change in events:
active_count += change
active_caches.append((time_point, active_count))
def binary_search(time):
left, right = 0, len(active_caches) - 1
while left <= right:
mid = left + (right - left) // 2
if active_caches[mid][0] <= time:
left = mid + 1
else:
right = mid - 1
return active_caches[right][1] if right >= 0 else 0
return [binary_search(t) for t in time]
Editor is loading...
Leave a Comment