zoukankan      html  css  js  c++  java
  • 169. Majority Element

    https://leetcode.com/problems/majority-element/

    本题大意:给定一个大小为n的正整数数组,求出出现了超过⌊ n/2 ⌋次的元素。假定数组不为空并且主元素一定存在。

    解题思路:本题有多种解法。

    1、统计法(最笨的办法)  先排序,然后统计次数。

     1 class Solution {
     2 public:
     3     int majorityElement(vector<int>& nums) {
     4         int n = nums.size();
     5         sort(nums.begin(), nums.end());
     6         int times = 0;
     7         int current = nums[0];
     8         for(int i = 0; i < n; i++)
     9         {
    10             if(current == nums[i]) ++times;
    11             else
    12             {
    13                 current = nums[i];
    14                 times = 0;
    15             }
    16             if( n % 2 == 0 && times >= n/2 ) break;
    17             if( n % 2 != 0 && times > n/2 ) break;
    18         }
    19         return current;
    20     }
    21 };

    2、先排序,然后找出中间元素

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

    3、时间复杂度最小的算法,一遍扫描就可以得到

     1 class Solution {
     2 public:
     3     int majorityElement(vector<int>& nums) {
     4         int flag = 0;
     5         int current = nums[0];
     6         for(int i = 0; i < nums.size(); i++)
     7         {
     8             if(current == nums[i]) ++flag;
     9             else if(flag == 0) {current = nums[i]; ++flag;}
    10             else --flag;
    11         }
    12         return current;
    13     }
    14 };
  • 相关阅读:
    关于TensorFlow2的tf.function()和AutoGraph的一些问题解决
    voxelmorph配置
    python处理nii格式文件
    mysql总结
    JVM内存模型
    Java线程池面试
    java NIO基础
    面试日记
    PhoenixFD插件流体模拟——UI布局【Gird】详解
    PhoenixFD插件流体模拟——UI布局【Resimulation】详解
  • 原文地址:https://www.cnblogs.com/jingyuewutong/p/5584742.html
Copyright © 2011-2022 走看看