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

Majority Element--LeetCode

时间:2015-04-12 10:45:18      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:c++   leetcode   算法   

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.


思路:可以参考快速排序的定位方法,参照任何一个元素,进行重新一次排序,之后相同的元素就相邻,既然这个元素多余总元素个数的n/2,那么遍历这个数组,对于此元素和n/2之后的元素相等,说明就是这个元素。

#include <iostream>
#include <vector>
using namespace std;

int majorityElement(vector<int> &num) 
{
    int i,j;
    int key = num[0];
    for(i=-1,j=0;j<num.size();j++)
    {
        if(num[j]<key)
        {
           i++;
           swap(num[i],num[j]);
        }                              
    } 
    
    for(i=0;i<num.size()/2;i++)
    {
        key = num[i+num.size()/2];
        if(num[i] == key)
         return key;                        
    }       
}

int main()
{
    int array[]={3,2,4,5,2,2,4,2,2,2,2,7};
    vector<int> vec(array,array+sizeof(array)/sizeof(int));
    cout<<majorityElement(vec);
    system("pause");
    return 0;
    }


Majority Element--LeetCode

标签:c++   leetcode   算法   

原文地址:http://blog.csdn.net/yusiguyuan/article/details/45007583

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