169.Majority Element

原创 2016年08月30日 10:48:47

Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

给定长度为n的一维数组,找出majority element。该数是数组中出现次数超过n/2次的元素。

你可以认为数组是非空的且majority element一定存在。


暴力求解法

通过两层循环将每个元素与后面的元素进行比较寻找majority element:

int majorityElement(int* nums, int numsSize) {
    int n=1;
    int i,j,majElement=0;
    if(numsSize==1)                        //数组只有一个元素
    return majElement=*nums;
    else
    {
        for(i=0;i<numsSize;i++)
        {
            for(j=i+1;j<numsSize;j++)
            {
                if(*(nums+i)==*(nums+j))
                n++;
                if(n>(numsSize/2))
                {
                    majElement=*(nums+i); 
                    break;
                }
             }
            if(n>(numsSize/2))             //已经找到majElement
            break;
            else
            n=1;
        }
        return majElement;
    }
}
算法复杂度为O(n^2),提交时由于Time Limit Exceeded失败。

Moore voting algorithm

每找出两个不同的element,就成对地删除,最终剩下的一定是majority number。

时间复杂度为O(n)

int majorityElement(int* nums, int numsSize) {
    int count=1;
    int i,majElement=0;
    if(numsSize==1)
    return majElement=*nums;
    else
    {
        majElement=*nums;              //将第一个元素值赋给maj
        for(i=1;i<numsSize;i++)
        {
            if(majElement!=*(nums+i))
            {
               count--; 
               if(count<0)
               {
                majElement=*(nums+i);
                count=1;
               }
            }
            else
            count++;
        }
        return majElement;
    }
}
提交结果如下:





版权声明:本文为博主原创文章,转载请声明出处:)

【LeetCode-面试算法经典-Java实现】【169-Majority Element(主元素)】

【169-Majority Element(主元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Chao】原...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月23日 06:38
  • 4470

【LeetCode】169. Majority Element (多数投票算法 & 算法迁移能力)

Question1Given an array of size n, find the majority element. The majority element is the element th...
  • jiange_zh
  • jiange_zh
  • 2016年01月09日 10:41
  • 1227

win7 静态IP配置不上,变成169.254.x.x

作者:iamlaosong 笔记本电脑,Win7系统,采用静态IP,有线上内网,无线上外网,上外网没问题,但是内网IP就是配置不上,配好后,运行ipconfig检查,地址变成169.254.139.1...
  • iamlaosong
  • iamlaosong
  • 2015年09月06日 10:41
  • 18956

【LeetCode】169. Majority Element (多数投票算法 & 算法迁移能力)

Question1Given an array of size n, find the majority element. The majority element is the element th...
  • jiange_zh
  • jiange_zh
  • 2016年01月09日 10:41
  • 1227

Leetcode 169. Majority Element[easy]

GRE回归,响应老师号召,做分治题目。题目: Given an array of size n, find the majority element. The majority element is...
  • qq379548839
  • qq379548839
  • 2016年09月19日 21:11
  • 149

[leetcode] 169.Majority Element

题目: Given an array of size n, find the majority element. The majority element is the element that a...
  • u014673347
  • u014673347
  • 2015年08月18日 15:43
  • 273

leetcode[169]:Majority Element

Majority Element Given an array of size n, find the majority element. The majority element is the e...
  • hahubaba
  • hahubaba
  • 2015年06月12日 12:15
  • 141

[169] Majority Element

给定一个数组,找到数组中的主要元素,即这个元素占数组的总元素个数的1/2以上。...
  • camlot_
  • camlot_
  • 2016年07月20日 21:35
  • 135

【LEETCODE】169-Majority Element

Given an array of size n, find the majority element. The majority element is the element that appear...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2015年11月28日 10:47
  • 315

LeetCode 169. Majority Element(众数)

原题网址:https://leetcode.com/problems/majority-element/ Given an array of size n, find the majority e...
  • jmspan
  • jmspan
  • 2016年05月25日 01:37
  • 496
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:169.Majority Element
举报原因:
原因补充:

(最多只允许输入30个字)