对于本题来说,暴力枚举的时间复杂度为o()所以我们需要采用更好的办法来对本题进行求解。不难想出,我们可以利用哈希表来存储对应每个数字在数组中出现的次数,当出现的次数>=数组长度时,说明当前数字就是数组中的多数元素,这样哈希表只需要一次遍历即可解决问题,时间复杂度为o(n),代码如下:
class Solution {
public:
int majorityElement(vector<int>& nums) {
unordered_map<int,int> _map;//创建哈希表,val为当前数字出现次数
for(auto it:nums)//利用增强for循环遍历数组
{
_map[it]++;//当前出现次数加一
if(_map[it]>nums.size()/2)//当前数字为多数元素,输出
return it;
}
return 0;
}
};