主元素问题


概述

给一个有 个元素的数列,保证有一个数 出现的次数 超过 ,求这个数。

做法

桶计数做法

桶计数做法是出现一个数,就把这个数出现次数 ,很好懂:

时间复杂度

但是这个做法很浪费空间,我们不推荐使用。

排序做法

显然,若一个数列存在主元素,那么这个主元素在排序后一定位于 的位置。

那么我们又有想法了:

看起来不错! 的复杂度可还行?

下面介绍本问题的 解法。

主元素数列的特性

由于主元素的出现的次数超过 ,那么在不断的消掉两个不同的元素之后,最后一定剩下主元素。

输入时判断与上一次保存的输入是否相同,如不同则删除两数,这里用栈来实现。

再进行优化后,空间复杂度也可以降至

贡献者:@Ir1dXD@mgt@Early

本页面最近更新:2/3/2023, 12:00:00 AM更新历史

发现错误?想一起完善? 在 GitHub 上编辑此页!

本页面的全部内容在 CC BY-SA 4.0SATA 协议之条款下提供,附加条款亦可能应用

评论

0 条评论
未登录用户


Copyright © 2016 - 2023 OI Wiki Team

最近更新:fd2ec2c, 2023-02-03

联系方式:Telegram 群组 / QQ 群组