Leetcode-- Majority Elemeny

来源:互联网 发布:算法之美 京东 编辑:程序博客网 时间:2024/06/07 16:19

Majority Element

原题:

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.

解题思路:刚开始的想法是直接对已有数组进行排序,但是这样做会改变原有数组,而且时间复杂度为O(n*logn)。具体代码如下:

class Solution {public:    int majorityElement(vector<int> &num) {        sort(num.begin(),num.end());        return num[num.size()/2];    }};
还有一种做法就是遍历整个数组,设置一个计数器,令第一个元素为待选元素,当下一元素和待选元素相同时,就++,不同时就--。若计数器为零,则更换待选元素。具体代码如下:
class Solution {public:    int majorityElement(vector<int> &num) {        int times = 0;        int element = 0;        for(int i=0;i<num.size();++i)        {            if(times == 0)            {                element = num[i];                times = 1;            }            else            {                if(element == num[i])                    ++times;                else                    --times;            }        }        return element;    }};



0 0
原创粉丝点击