[leetcode]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;  
    }  
      
}  

 

posted @ 2018-01-13 18:55  chenhan233  阅读(115)  评论(0编辑  收藏  举报