Divide and Conquer-169. Majority Element

Posted 抒抒说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Divide and Conquer-169. Majority Element相关的知识,希望对你有一定的参考价值。

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.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

 

int majorityElement(int* nums, int numsSize) {  
    if(numsSize == 0||numsSize == 1)  
        return *nums;  
      
    int x = majorityElement(nums,numsSize / 2);  
    int y = majorityElement(nums + numsSize / 2,numsSize - numsSize / 2);  
      
    if(x == y)  
        return x;  
      
    else  
    {  
        int countX = 0;  
        int countY = 0;  
          
        for(int i = 0;i < numsSize;i++)  
        {  
            if(*(nums + i) == x)  
                countX++;  
              
            else if(*(nums + i) == y)  
                countY++;  
        }  
          
        return countX > countY ? x : y;  
    }  
      
}  

 

以上是关于Divide and Conquer-169. Majority Element的主要内容,如果未能解决你的问题,请参考以下文章

Divide and Conquer169. Majority Element(easy)

Choose and divide UVA - 10375

UVa 10375 Choose and divide (唯一分解定理)

UVa 10375 - Choose and divide(唯一分解定理)

UVA 10375 - Choose and divide(数论)(组合数学)

Choose and divide UVA - 10375(筛素法+唯一分解定理的应用)