Java Equi Leader
public class Solution {
    public static int equiLeader(int[] a) {
        int leaderSize = 0;
        int value = 0;

        for (int v : a) {
            if (leaderSize == 0) {
                leaderSize++;
                value = v;
            } else if (value != v) {
                leaderSize--;
            } else {
                leaderSize++;
            }
        }
        int candidate = leaderSize > 0 ? value : -1;

        int leaderCount = 0;
        for (int v : a) {
            if (v == candidate) {
                leaderCount++;
            }
        }
        int leader = -1;
        if (leaderCount > a.length / 2.0) {
            leader = candidate;
        }

        int count = a.length;
        int lLeaderCount = 0;
        int equiLeaders = 0;

        for (int k = 0; k < count; k++) {
            int v = a[k];
            int leftHalf = (k + 1) / 2;
            int rightHalf = (count - k - 1) / 2;
            if (v == leader) {
                lLeaderCount++;
            }

            int rLeaderCount = leaderCount - lLeaderCount;
            if (lLeaderCount > leftHalf && rLeaderCount > rightHalf) {
                equiLeaders++;
            }
        }

        return equiLeaders;
    }
}

This keeps leader counts on both sides of the split and counts positions where the same leader survives in each half.