#include class Solution { public: int majorityElement(vector& nums) { int n = nums.size(); map m_times; int moreThanTimes = n / 2; for (auto i = 0; i < n; ++i) { auto it = m_times.find(nums[i]); if (it == m_times.end()) { // No existence in map, insert m_times.insert(std::pair(nums[i], 1)); it = m_times.find(nums[i]); } // Is it more than ⌊ n/2 ⌋ times ? if ((*it).second > moreThanTimes) { return (*it).first; } else { (*it).second++; } } // Can't find return -1; } };