zoukankan      html  css  js  c++  java
  • leetcode问题:求众数

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

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

    示例 1:

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

    示例 2:

    输入: [2,2,1,1,1,2,2]
    输出: 2
    解法一:
    思路:从第一个数开始count=1,遇到相同的就加1,遇到不同的就减1,减到0就重新换个数开始计数,总能找到最多的那个。注意题目的条件:众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。
    也就是说众数一定超过数组长度的一半,因此count最后不为0的数一定是众数。
    class Solution {
        public int majorityElement(int[] nums) {
           int count = 1;
           int maj = nums[0];
            for(int i = 1; i < nums.length;i++)
            {
                if(maj == nums[i])
                {
                    count++;
                }
                else
                {
                    count--;
                    if(count == 0)
                        maj = nums[i+1];
                }
            }
            return maj;
        }
    }
    解法2:超级简单
    class solution{
    public int majorityElement(int[] nums)
    {
    Arrays.sort(nums);
    return(nums[nums.length / 2])
    }
    }
  • 相关阅读:
    Docker的安装、配置及其基本使用
    Java提升七:注解
    Java提升六:泛型
    Java提升五:反射与动态代理
    MySQL中如何将主键默认值设为UUID()
    图解Mybatis框架原理及使用
    Java提升四:Stream流
    Java提升三:函数式接口
    Java提升二:Lambda表达式与方法引用
    java提升一:内部类
  • 原文地址:https://www.cnblogs.com/zhangchuan1001/p/10604812.html
Copyright © 2011-2022 走看看