leetcode每日打卡(13):多数元素

多数元素

    • 题目描述
    • 我的解题
    • 解法二

题目描述

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

我的解题

排序,中间的数字

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

执行用时 :28 ms, 在所有 C++ 提交中击败了47.25%的用户
内存消耗 :20.5 MB, 在所有 C++ 提交中击败了5.24%的用户

解法二

当一个出现次数大雨n/2,其他树出现一定小于它出现的次数

class Solution {
public:
    int majorityElement(vector<int>& nums) {
        int ans=0, count=0;
        for(auto num: nums)
        {
            if(count==0){
                ans=num;
                count++;
            }
            else if(num==ans) count++;
            else count--;
        }
        return ans;
    }
};

执行用时 :16 ms, 在所有 C++ 提交中击败了94.72%的用户
内存消耗 :20.2 MB, 在所有 C++ 提交中击败了5.24%的用户

你可能感兴趣的:(C++,leetcode,算法)