题目:
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.
思路:排序之后再计数,每次循环到[i]与[i-1]不相同时,就比较并留下计数较大的。要注意循环到最后一个元素时的处理,我单独列出来了。还要注意循环从1开始,不能从0开始,这样才能[i]与[i-1]比较,否则越界。
我的答案:
class Solution { public: int majorityElement(vector<int>& nums) { int ma=0,a=1,result=nums[0]; sort(nums.begin(),nums.end()); for(int i=1;i<nums.size();i++) { if(nums[i]==nums[i-1]&&i!=nums.size()-1) a++; else if(nums[i]==nums[i-1]&&i==nums.size()-1) { a++; if(a>ma) { result=nums[i-1]; ma=a; } } else { if(a>ma) { result=nums[i-1]; ma=a; } a=1; } } return result; } };
转载请注明原文地址: https://ju.6miu.com/read-17398.html