Python Equi Leader
def equi_leader(a: list[int]) -> int:
leader_size = value = 0
for v in a:
if leader_size == 0:
leader_size += 1
value = v
elif value != v:
leader_size -= 1
else:
leader_size += 1
candidate = value if leader_size > 0 else -1
count = len(a)
leader_count = sum(1 for v in a if v == candidate)
leader = candidate if leader_count > count / 2 else -1
l_leader_count = 0
equi_leaders = 0
for k, v in enumerate(a):
left_half = (k + 1) // 2
right_half = (count - k - 1) // 2
if v == leader:
l_leader_count += 1
r_leader_count = leader_count - l_leader_count
if l_leader_count > left_half and r_leader_count > right_half:
equi_leaders += 1
return equi_leaders
This keeps leader counts on both sides of the split and counts positions where the same leader survives in each half.