编程题 | 多数元素

这篇博客探讨了如何在长度为n的数组中快速找出出现次数大于等于n/2的数字。介绍了三种方法:使用HashMap记录次数、排序后取中间元素、以及摩尔投票法。摩尔投票法通过抵消非众数来逐步缩小众数范围,是一种巧妙的解决方案。
摘要由CSDN通过智能技术生成

问题 长度为 n 的数组,其中只有一个数字出现了大于等于 n/2 次,快速找到这个数字

解法一 HashMap

HashMap的key为数字,value为该数字出现的次数,不详细叙述

解法二 排序

排序后,因为该数字出现的次数大于等于n/2次,因此该数组下标为n/2的位置一定存放的是该数字,采用快速排序,时间复杂度和空间复杂度都为O( n l o g 2 n nlog_2n nlog2n)

class Solution {
   
    public int majorityElement(int[] nums) {
   
        if(nums.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值