在一个数组中找到主要的元素,也就是出现次数大于数组长度一半的元素。
我想到的方法是
1. 排序,然后扫描一次就知道了。总共nlgn
2. 哈希,记录每个次数,O(n)的时间和空间。
class Solution { public: int majorityElement(vector<int> &num) { unordered_map<int, int> umap; for (int i = 0; i < num.size(); i++) { umap[num[i]]++; } for (unordered_map<int, int>::iterator itr = umap.begin(); itr != umap.end(); itr++) { if (itr -> second > num.size()/2) return itr -> first; } } };