使用摩尔投票法解决多数问题

Python018

使用摩尔投票法解决多数问题,第1张

博耶-摩尔多数投票算法 (英语:Boyer–Moore majority vote algorithm),中文常作 多数投票算法 摩尔投票算法 等,是一种用来寻找一组元素中占多数元素的常数空间级 时间复杂度 算法。

这一算法应用的问题原型是在集合中寻找可能存在的多数元素,这一元素在输入的序列重复出现并占到了序列元素的一半以上;在 第一遍遍历之后应该再进行一个遍历以统计第一次算法遍历的结果出现次数,确定其是否为众数 ;如果一个序列中没有占到多数的元素,那么第一次的结果就可能是无效的随机元素。对于数据流而言,则不太可能在亚线性空间复杂度的情况下中就寻找到出现频率最高的元素;而对于序列,其元素的重复次数也有可能很低。

上面的描述来自维基百科。过程可以分为两个阶段:

(1) 投票阶段 :即投票人之间票数进行抵消。

(2) 计数阶段 :计算对抗结果中最后剩下的那个候选人票数是否有效。

在LeetCode上,有下面几题

(1) 面试题 17.10. 主要元素

(2) 169. 多数元素

第(1)道属于不一定存在多数元素的情况,第(2)道属于存在多数元素的情况。对于一定存在多数元素的情况,我们可以不用进行计数阶段。

所以我们直接看第(1)题,因为第一题包含了第(2)题的解法。

数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。

示例 1:

示例 2:

示例 3:

以示例2为例,[2, 2, 1, 1, 1, 2, 2]

这是存在多数元素的情况,对于不存在多数元素的情况,比如[1, 2, 3]这样的个数为奇数的序列,如果按照上面的方法,最后求的major值为3,这是一个错误的答案。

所以对于不一定存在多数元素的情况下, 我们在求得major后,需要再遍历一次,统计这个major在序列中出现的次数是否大于n / 2,即验证票数是否有效。

芭芭拉·史翠珊

看她的恐怖记录吧:音乐方面RIAA认证72白金 首位专集过2000万的女歌手 发行了60张唱片 拥有连续的49张金专辑、31张白金专辑 连续5次获得格莱美最佳流行女歌手 历年之最

音乐历史上单场演唱会票房记录1469万美元 93年至94年的巡演 票房高达6亿美元.

实在是太强悍 不光在音乐方面 在电影 戏剧等等方面同样取得了巨大的成功...

MIMI

是仅次于芭芭拉的第二销售高的女歌手 64白金认证(其实不至这么多)

90年代唱片销量最高的艺人 也是日本历史销售最高的外国歌手 而且仅仅发行18片就取得如此高的销售真 其中6张精选辑 1张圣诞辑 11张录音室专集 在1990年获得格来美最佳女歌手奖 并四次获得世界音乐大奖最佳女歌手奖 并且是美国历史上冠军单曲最多的女歌手

其他荣誉:历史上第一位获得世界音乐钻石奖的女艺人

历史上拥有白金单曲最多的女艺人

历史上拥有最多的多倍白金专辑的女艺人

Billboard历史上拥有最多冠军单曲的女艺人

Billboard历史上冠军单曲累计周数最长的艺人

Madonna

流行的象征象征 超强的人气活跃娱乐圈几十年 她的确全球最红的女歌手 

RIAA认证64白金 发行23张唱片 音乐史上艺人单一巡回演唱会的最高票房冠军纪录

史上拥有最多英国流行金榜冠军单曲和冠军专集最多的女艺人。

美国告示牌杂志 "终身成就奖" 得主 音乐史上艺人单一巡回演唱会的最高票房冠军纪录!(Sticky &Sweet Tour 4亿8百万美金票房)商业成就非凡....

Whitney Houston

美国历史公认音域最宽 现场最具感染力的女歌手 1985年首次发行的通明专集就一鸣惊人 是美国当年最畅销的专集全球热卖2200万张 由他主演和演唱的电影。

《保膘》原声带在全球狂卖 成为历史上销售最高的电影原声带 也是美国历史上销售最高的电影原声带(1700万)两次拿下美国年度销售榜冠军位置 拿过两次以上的只有猫王和

皮头世能做到 RIAA认证55白金 。

Celine Dion

美国本土之外销售最高的女歌手 RIA认证50白金 获得过5次格莱美奖、12次世界音乐奖、7次美国音乐奖、7次美国告示牌、21次朱诺奖和39次Félix Award音乐奖。

也是90年代最受欢迎的女歌手之一 并且是唯一一位连续两张英文专辑销量都超过3000万以及连续5张专辑都超过2000万。

连续7张超1000万的专辑的女艺人 由她演唱的《泰坦尼克号》主题曲My Heart Will Go On在全球流行 其原声带也在全球热卖 光在美国就有11白金的认证 她也是唯一一个在拉斯维加斯一唱就是5年 总共732场的记录 。

Shania Twain 

美国专集销售最多的乡村女歌手 只发行过8张唱片 RIAA认证48白金

美国历史上女歌手销售最高的专集come on over 认证20白金。

Janet Jackson 

节奏女王 曾创下日本小巨蛋外国人演唱会的票房记录 RIAA认证26白金。

Faith Hill 

美国著名乡村女歌手 被称为国民天后 深受大众欢迎 只发行过8张唱片

但光美国认证就有25.5白金 太强啦!《珍珠港》电影原声带中最著名的一首歌There You'll Be风靡全球。

Sade 

柔滑,平和,充满爵士味的pop是她的风格 本人对她了解不多 不好意思 知道的朋友可以来谈论下 RIAA认证23.5白金。

Beyonce

完美女神 关于她不需要介绍太多了吧 当红的RB女歌手 RIAA认证10白金

第一张危险的爱全球热卖850万 第二张BDAY全球热卖600万 第三张残忍的莎拉650万

美国30岁以下最能赚钱的女艺人 太多的荣耀 BEE的前景更加光明。

Mary J.Blige 

独具魅力的黑人RB女歌手 完美的声线把RB和说唱音乐完美结合 赢得9座葛莱美奖、获得8张超白金唱片销售认证、历年专辑销售超过4000万张,每一张专辑都能掳获乐迷与乐评的心 RIAA认证18白金。

Alicia Keys

是美国R&B音乐界在进入新世纪之后冉冉升起的一名新生代女歌手,出道以来就以其与年龄不相称的成熟和才华取得了非常令人惊异的成就。

Christina Aguilera

曾经和BS齐名的流行类女歌手 首张专集就大获成功 其成熟高昂的唱腔为她赢得了一次格来美最佳新人奖 两次最佳流行女歌手奖 RIAA认证14.5白金。

Lady GaGa

不需要多介绍吧 现在风头最劲的女歌手 即将在未来影响欧美流行风的小女子

她有一切你所嫉妒的 她有才华 所有单曲都是自己创作的 她有美貌 她有个性 她很时尚

她很叛逆 她敢于做自己 她敢于秀自己 我的妈呀 这股热潮来的太猛烈的 好吧 看看她的成绩吧 The Fame(加改版)已经在全球热卖接近1100万 单曲销售更是猛 超过5000万。

她就是未来。

Taylor Swift

国乡村音乐女创作歌手 这个弹着吉他的年轻女孩进年来迅速成为新的国民

天后 她窜红的速度难以想象 只发行两张录音室专集的她就取得了惊人的成绩 09年更是拿下美国年度销售冠军 RIAA认证10白金。

资料拓展

“欧美”是世界上的一块地域,其文化属于西方文化,是欧洲和北美的统称。主要是指欧洲全境、北美,以及澳大利亚和新西兰,统治血统为白人;有时也包括巴西、阿根廷、土耳其和以色列,因为这些国家由于历史原因,文化与欧洲渊源较深。

西方世界主要特征为:国家的人民普遍享有宗教自由和言论自由,并得到法律保障,有民主选举,强调人权和法治。语言系统多使用拼音文字,拉丁字母或西里尔字母书写;文化上多承传历史悠久的古希腊与古罗马文化。

1.首先来到摩尔拉雅山顶,点击糊涂精开始任务

2.点击心愿动力车,它就会送你到圣诞城

3.一进入圣诞城,发现捣蛋鬼正在不停的发射雪球让你不能前进,这时候要怎么通过圣诞城呢?

只要将投掷物品中的“雪球”投向右上方的大雪球,让它变大,变到最大之后它会自动滚下去打跑捣蛋鬼

4.捣蛋鬼虽然被打跑了,但是还有一个瞌睡虫在外面,只要从他婶婶拿到圣诞屋的钥匙才能进去,

方法是将右边的吸铁石拖到瞌睡虫的身边,就会把钥匙吸出来~你就能获得钥匙

5.进屋遇到小博士,点击他对话,开始问答

【答案如下(转载记得感恩!)】

圣诞夜是几月几日?12月24日

圣诞城大门口的栏杆上有几颗黄色五角星?3个

糊涂精的头发是什么颜色的?褐色

没有了魔法能源,圣诞城会怎么样?一片漆黑没有声色

你觉得谁是世界上最可爱的人?家人和朋友

你觉得我们为什么绑架圣诞老人?拯救圣诞城

【回答全部正确后获得唤醒圣诞老人的药水】

6.接下去我们点击开心果,跟他对话2次,就能进入一个小游戏,用鼠标左右移动控制平衡,很简单

大概控制住10秒就行了吧

7.达到他的要求之后可以获得一把钥匙,然后就可以上2楼了

8.从右上角的楼梯上到2楼,点击圣诞老人,用药水唤醒他,他会告诉你他被小精灵们扒光了……

然后【把胆小鬼从被窝里拖出来】,他会告诉你衣服被藏在哪里了

9.圣诞老人的衣服在床右边的枕头下,翻开了就可以看到衣服,拖到圣诞老人身上给他穿好

10.接下去圣诞老人会让你找他的帽子,点击最右边的被子,

多点几次出现金色的钥匙,拖动钥匙打开下面的抽屉,就可以看到圣诞老人的帽子了

11.奖励是小精灵的衣服,很可爱~然后圣诞老人说他要教训小精灵,让你出去一会儿~

12.下楼再上来,圣诞老人教训完了,他看起来很开心- -

然后又有任务了,让你帮他发礼物给小摩尔们

13.需要找【一个陌生人】送礼物,找【一个好友】送礼物,

找【淘淘乐街的拉姆】送礼物和找拉姆学院教导处的【菩提大伯】送礼物~

14.首先来到圣诞屋的1楼,点击右边的盒子一步步包装礼物,然后拖到口袋中,拖满之后获得5个礼物

15.然后很重要,一定要点击左边的凳子,穿上整套小精灵服,才能继续任务~

16.到别人家,找到这个【壁炉】,点击就能送出礼物了(希望大家都把壁炉放出来,这样你才能收到更多的礼物呀,路法的米米号是5279885,缺少送礼物的人的时候来送我吧,我不介意的呵呵~)

17.【淘淘乐街】拉姆的位置和【拉姆学院】-【教导处】-菩提大伯的位置,很好找

18.完成一次任务获得圣诞小精灵装饰奖励,很漂亮吧~嘿嘿

第二次完成任务就不知道奖励什么了,大家试试吧~

19.接下来是超级拉姆的专属任务。带上你的超级拉姆点击圣诞屋左边的门可以进入礼品秘密制作基地

20.规则是拼出3个成功的礼物就算过关,比较简单,具体的操作方法就不写出来了,因为房间里面礼物太多太多,整理需要一段时间,

拼出3个礼物后获得圣诞节车票,点击马上过去,你就可以进入圣诞车了

21.上车之前记得先领取麋鹿圣诞车(免费的炫风车哦!)点击GO,就开始起飞了,在飞行的过程中点击图中红色的按钮,就能扔下礼物,将礼物准确的扔进烟囱之后,车上就会出现2颗能量星,每次飞行最多可以得到30颗能量星

22.能量星可以在圣诞屋2楼的圣诞老人处兑换圣诞老人套装,蛮好看的