LeetCode 169 多数元素
LeetCode 169 题目保证有这样的数并且只有一个,所以如果找到了就直接返回。
方法一 unordered_map
使用 unordered_map 计算每一个数据的次数,如果出现次数大于了 limit 直接返回就行了。
class Solution {
public:
int majorityElement(vector<int>& nums) {
int limit = nums.size() / 2;
unordered_map<int, int> mp;
int ret = 0;
for (int it : nums) {
mp[it]++;
if (mp[it] > limit) {
ret = it;
break;
}
}
return ret;
}
};
方法二 sort()
先排序,排序之后实现了相同的数据都在一起。只要有一个数据的次数 > limit 就直接返回就行了。
class Solution {
public:
int majorityElement(vector<int>& nums) {
sort(nums.begin(), nums.end());
int limit = nums.size() / 2;
for (int i = 0; i < nums.size(); ) {
int j = i + ;
(j < nums.() && nums[j] == nums[i]) {
j++;
}
(j - i > limit) nums[i];
i = j;
}
;
}
};

