static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine(BinaryGap.Solution(529)); foreach (var item in CyclicRotation.Solution(new int[] { 3, 8, 9, 7, 6 }, 3)) { Console.Write(item + " "); } Console.WriteLine(); Console.WriteLine(OddOccurrencesInArray.Solution(new int[] { 4, 5, 6, 4, 5, 6, 7 })); Console.WriteLine(PermMissingElem.Solution(new int[] { 2, 3, 1, 5 })); Console.WriteLine(FrogJmp.Solution(10, 100, 30)); Console.WriteLine(TapeEquilibrium.Solution(new int[] { 3, 1, 2, 4, 3 })); Console.WriteLine(PermCheck.Solution(new int[] { 2, 3, 1, 4, 6 })); Console.WriteLine(FrogRiverOne.Solution(5, new int[] { 1, 3, 1, 4, 2, 3, 5, 4 })); Console.WriteLine(MissingInteger.Solution(new int[] { 1, 3, 6, 4, 1, 2 })); foreach (var item in GenomicRangeQuery.Solution("CAGCCTA", new int[] { 2, 5, 0 }, new int[] { 4, 5, 6 })) { Console.Write(item + " "); } Console.WriteLine(); Console.WriteLine(MaxProductOfThree.Solution(new int[] { 1, 1, 1, -2, -2 })); Console.WriteLine(Distinct.Solution(new int[] { 2, 1, 7, 2, 2, 1 })); Console.WriteLine(StoneWall.Solution(new int[] { 8, 8, 5, 7, 9, 8, 7, 4, 8 })); Console.WriteLine(Dominator.Solution(new int[] { 3, 4, 3, 2, 3, -1, 3, 3 })); Console.WriteLine(EquiLeader.Solution(new int[] { 4, 3, 4, 4, 4, 2 })); Console.WriteLine(MaxProfit.Solution(new int[] { 23171, 21011, 21123, 21366, 21013, 21367 })); Console.WriteLine(MaxSliceSum.Solution(new int[] { 3, 2, -6, 4, 0 })); Console.WriteLine(MaxDoubleSliceSum.Solution(new int[] { 3, 2, 6, -1, 4, 5, -1, 2 })); Console.WriteLine(Flags.Solution(new int[] { 1, 5, 3, 4, 3, 4, 1, 2, 3, 4, 6, 2 })); Console.WriteLine(ChocolatesByNumbers.Solution(10, 4)); }
public int Solution(int[] A) { var leaderIndex = new Dominator().Solution2(A); if (leaderIndex == -1) { return(0); } var leader = A[leaderIndex]; var leaderCount = Array.FindAll(A, x => x == leader).Length; var equiLeaders = 0; var leaderCountSoFar = 0; for (int i = 0; i < A.Length; i++) { if (A[i] == leader) { leaderCountSoFar++; } if (leaderCountSoFar > (i + 1) / 2 && leaderCount - leaderCountSoFar > (A.Length - i - 1) / 2) { equiLeaders++; } } return(equiLeaders); }