java.lang.Object
g1101_1200.s1157_online_majority_element_in_subarray.MajorityChecker

public class MajorityChecker extends java.lang.Object
1157 - Online Majority Element In Subarray.

Hard

Design a data structure that efficiently finds the majority element of a given subarray.

The majority element of a subarray is an element that occurs threshold times or more in the subarray.

Implementing the MajorityChecker class:

  • MajorityChecker(int[] arr) Initializes the instance of the class with the given array arr.
  • int query(int left, int right, int threshold) returns the element in the subarray arr[left...right] that occurs at least threshold times, or -1 if no such element exists.

Example 1:

Input [“MajorityChecker”, “query”, “query”, “query”] [1, 1, 2, 2, 1, 1, [0, 5, 4], [0, 3, 3], [2, 3, 2]]

Output: [null, 1, -1, 2]

Explanation:

MajorityChecker majorityChecker = new MajorityChecker([1, 1, 2, 2, 1, 1]); majorityChecker.query(0, 5, 4); // return 1 majorityChecker.query(0, 3, 3); // return -1 majorityChecker.query(2, 3, 2); // return 2

Constraints:

  • 1 <= arr.length <= 2 * 104
  • 1 <= arr[i] <= 2 * 104
  • 0 <= left <= right < arr.length
  • threshold <= right - left + 1
  • 2 * threshold > right - left + 1
  • At most 104 calls will be made to query.
  • Constructor Summary

    Constructors
    Constructor
    Description
    MajorityChecker(int[] arr)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    query(int left, int right, int threshold)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • MajorityChecker

      public MajorityChecker(int[] arr)
  • Method Details

    • query

      public int query(int left, int right, int threshold)