class Solution {
public int majorityElement(int[] nums) {
return getMaxTimes(nums,0,nums.length-1);
}
private int getMaxTimes(int[] nums,int l,int r) {
// 递归的结束条件
if(l==r) {
return nums[l];
}
int mid =l+(r-l)/2;
int leftValue =getMaxTimes(nums,l,mid);
int rightValue =getMaxTimes(nums,mid+1,r);
if (leftValue == rightValue){
return leftValue;
}
int leftCount =0;
int rightCount =0;
for(int i=l;i<=r;i++) {
if (nums[i] == leftValue) {
leftCount++;
}
if (nums[i] == rightValue) {
rightCount++;
}
}
return leftCount > rightCount? leftValue:rightValue;
}
}