码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode【169. Majority Element】

时间:2016-08-06 15:46:06      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

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.

 

思路.1

排序,选择第n/2个数,调用STL的sort,所以时间复杂度是O(nlogn)

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        sort(nums.begin(),nuns.end());
        return nums[nums.size()/2];
    }
};

  

思路2>

设置一个计数,当count为0时设置majority的值,如果下一个值与majority相同则count+1,如果不同,则-1,知道count==0时,重新赋值,因为majority肯定大于n/2所以最后>0的count的肯定是majority,这样,就只需要遍历一遍就可以求出majority,时间复杂度为O(n)

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int Majority = nums[0];
        int count = 1;
        for( int i = 1; i < nums.size(); i++ ){
            if( count == 0 ){
                count++;
                Majority = nums[i];
            }
            else if( Majority == nums[i] ){
                count++;
            }
            else if ( Majority != nums[i] ){
                count--;
            }
        }
        return Majority;
    }
};

  

LeetCode【169. Majority Element】

标签:

原文地址:http://www.cnblogs.com/rockwall/p/5744194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!