boyer--moore algorithm majority element code example

Example: Find majority element (Boyer–Moore Majority Vote Algorithm)

def majorityElement(A):
 
    # `m` stores the majority element (if present)
    m = -1
 
    # initialize counter `i` with 0
    i = 0
 
    # do for each element `A[j]` in the list
    for j in range(len(A)):
 
        # if counter `i` becomes 0
        if i == 0:
 
            # set the current candidate to `A[j]`
            m = A[j]
 
            # reset the counter to 1
            i = 1
 
        # otherwise, increment the counter if `A[j]` is a current candidate
        elif m == A[j]:
            i = i + 1
 
        # otherwise, decrement the counter if `A[j]` is a current candidate
        else:
            i = i - 1
 
    return m