leetcode169.多数元素

 对于本题来说,暴力枚举的时间复杂度为o(n^{2})所以我们需要采用更好的办法来对本题进行求解。不难想出,我们可以利用哈希表来存储对应每个数字在数组中出现的次数,当出现的次数>=数组长度时,说明当前数字就是数组中的多数元素,这样哈希表只需要一次遍历即可解决问题,时间复杂度为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;
    }
};

猜你喜欢

转载自blog.csdn.net/asdasd121312dasd/article/details/126539371