fork download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static bool HasMajorityElement(int[] a)
  6. {
  7. int candidate = 0;
  8. int count = 0;
  9. foreach (int i in a)
  10. {
  11. if (count == 0)
  12. {
  13. candidate = i;
  14. count = 1;
  15. }
  16. else
  17. {
  18. count += candidate == i ? 1 : -1;
  19. }
  20. }
  21. count = 0;
  22. foreach (int i in a)
  23. {
  24. if (i == candidate) ++count;
  25. }
  26. return count > a.Length / 2;
  27. }
  28.  
  29. public static void Main()
  30. {
  31. var a = new int[] { 5, 2, 1, 3, 1 };
  32. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  33. a = new int[] { 5, 1, 3, 1, 1 };
  34. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  35. a = new int[] { 5, 1, 1, 1, 1 };
  36. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  37. a = new int[] { 1, 1, 1, 1, 1 };
  38. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  39. a = new int[] { 0, 4, 3, 2, 1 };
  40. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  41. a = new int[] { 0, 0, 0, 2, 1 };
  42. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  43. a = new int[] { 1, 5, 5, 5, 1 };
  44. System.Console.WriteLine("HasMajorityElement(): {0}", HasMajorityElement(a));
  45. }
  46. }
Success #stdin #stdout 0.03s 34752KB
stdin
Standard input is empty
stdout
HasMajorityElement(): False
HasMajorityElement(): True
HasMajorityElement(): True
HasMajorityElement(): True
HasMajorityElement(): False
HasMajorityElement(): True
HasMajorityElement(): True