• 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])
    }
    }
  • 相关阅读:
    lnmp 优化
    linux-lnmp 搭建报错
    nfs 配置
    全网备份脚本rsync
    .Net面试题二
    软件设计模式
    .Net面试题一
    asp.net运行机制
    NHiberante的优缺点
    什么是架构、框架、模式和平台
  • 原文地址:https://www.cnblogs.com/zhangchuan1001/p/10604812.html
Copyright © 2020-2023  润新知