Go Equi Leader
func equiLeader(a []int) int {
	leaderSize, value := 0, 0
	for _, v := range a {
		switch {
		case leaderSize == 0:
			leaderSize++
			value = v
		case value != v:
			leaderSize--
		default:
			leaderSize++
		}
	}

	candidate := -1
	if leaderSize > 0 {
		candidate = value
	}

	leaderCount := 0
	for _, v := range a {
		if v == candidate {
			leaderCount++
		}
	}

	leader := -1
	if leaderCount > len(a)/2 {
		leader = candidate
	}

	count := len(a)
	lLeaderCount, equiLeaders := 0, 0
	for k, v := range a {
		leftHalf := (k + 1) / 2
		rightHalf := (count - k - 1) / 2
		if v == leader {
			lLeaderCount++
		}

		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.