美文网首页
多数元素

多数元素

作者: YOLO_2a2d | 来源:发表于2021-03-24 10:07 被阅读0次

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

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

    示例 1:

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

    示例 2:

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

    进阶:

    尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

    解法:摩尔根投票法
    类比比喻,将数组中的数字比喻成一个国家,不同数字即属于不同国家的投票员,每个数字有一票,一次遍历,相同数字则投赞成票,不同数字则投反对票,投统计最后投票的情况!

    
    int majorityElement(int* nums, int numsSize){
    
       int count=0;
       int res=-1;
       for(int i=0;i<numsSize;i++)
       {
           if(nums[i]==res)
           {
               count++;
           }
           else if(--count<0)
           {
                res=nums[i];
                count++;
           }
       }
        return res;
    }
    
    

    作者:力扣 (LeetCode)
    链接:https://leetcode-cn.com/leetbook/read/top-interview-questions/xm77tm/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:多数元素

          本文链接:https://www.haomeiwen.com/subject/kupchltx.html