leetcode problem 169. Majority Element

Description

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.

Example 1:

Input: [3,2,3]
Output: 3

Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2

Solution

递归(快是快,可怎么把memory降下来?)

code:

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int numsLen(nums.size());
        if (numsLen<=2) return nums[0];
        vector<int> res;
        int i(0);
        int c(0);
        if(numsLen%2==1)
        {
            while(i<numsLen){
                if(nums[numsLen-1]==nums[i]) ++c;
                ++i;
            }
            if(c>numsLen/2) return nums[numsLen-1];
            --numsLen;
        }
        i = 0;
        while(i<numsLen)
        {
            if(nums[i]==nums[i+1]) res.push_back(nums[i]);
            i+=2;
        }
        return majorityElement(res);    
    }
};

结果:

Your runtime beats 98.97 % of cpp submissions.
memory last 5%

20190403

tbc

猜你喜欢

转载自blog.csdn.net/Aries_M/article/details/88975995