首页 > 其他 > 详细

leetcode_36【数学】---- 多数元素

时间:2020-05-14 10:38:18      阅读:42      评论:0      收藏:0      [点我收藏+]

给定一个大小为 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

 

示例 1:

输入: [3,2,3]
输出: 3

示例 2:

输入: [2,2,1,1,1,2,2]
输出: 2

思路:暴力法 排序法 Boyer-Moore 投票算法
解答(C++):
class Solution {
public:
    int majorityElement(vector<int>& nums) {
        // 暴力法
//         std::map<int,int> smap;
//         for (auto item : nums) {
//             if (smap.find(item) == smap.end()) {
//                 smap[item] = 1;
//             } else {
//                 smap[item] = smap[item] + 1;
//             }
//         }
        
//         int size = 0;
//         int el = -1;
//         for (auto it : smap) {
//             if (it.second > size) {
//                 size = it.second;
//                 el = it.first;
//             }
//         }
//         return el;
        // 排序法
        // std::sort(nums.begin(), nums.end());
        // return nums[nums.size()/2];
        
        // Boyer-Moore 投票算法
        int candidate = -1;
        int count = 0;
        for (auto item : nums) {
            if (item == candidate) {
                count++;
            } else if (--count < 0) {
                candidate = item;
                count = 1;
            }
            
        }
        return candidate;
    }
};

 

leetcode_36【数学】---- 多数元素

原文:https://www.cnblogs.com/vczf/p/12886467.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!