https://medium.com/@slicesharpy/leetcode-229-majority-element-ii-detailed-explanation-from-naive-to-optimal-solution-08b96de6aaac