1. 程式人生 > >Divide and Conquer-169. Majority Element

Divide and Conquer-169. Majority Element

problem pan turn leet return i++ log ble tco

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