zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)求众数 个人题解

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

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

    示例 1:

    输入: [3,2,3]
    输出: 3

    示例 2:

    输入: [2,2,1,1,1,2,2]
    输出: 2


    简单的思路是用map记录数字出现的次数,最后找到出现最多次数的那个数字,这个是比较简单的思路,这里就不放代码了

    算法的思路是使用 “摩尔投票法”,一种算法可以在遍历数组的过程中找到出现次数大于数组长度一半且唯一的数字。也就是本题中的众数。

    摩尔投票法的介绍:https://www.jianshu.com/p/c19bb428f57a

    代码如下:

    class Solution {
        public int majorityElement(int[] nums) {
            int count = 0;
            int ret = nums[0];
            for (int n : nums) {
                if (count == 0)
                    ret = n;
                if (n == ret)
                    count++;
                else {
                    count--;
                }
            }
            return ret;
        }
    }
  • 相关阅读:
    第三章,DNA序列的进化演变
    哈迪-温伯格定律和近亲杂交
    mysql
    Dajngo admin使用
    Django之Form组件
    python三大器
    python函数
    python文件操作
    python字典和集合
    算法基础
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10585631.html
Copyright © 2011-2022 走看看