方法:分支法,将数据进行对半分割处理,类似归并排序
class Solution {public:int majorityElement(vector<int>& nums) {return divide(nums,0,nums.size()-1);}int divide(vector<int>& nums,int left,int right){if(left==right){return nums[left];}int mid=(left+right)/2;int left_ma=divide(nums,left,mid);int right_ma=divide(nums,mid+1,right);if(choose(nums,left,right,left_ma)>((right-left+1)/2)){return left_ma;}else if(choose(nums,left,right,right_ma)>((right-left+1)/2)){return right_ma;}return -1;}int choose(vector<int>& nums,int left,int right,int target){int count=0;for(int i=left;i<=right;i++){if(nums[i]==target){count++;}}return count;}};
