今天了解了一下摩尔投票法
原题是leetcode229
- 注意题目中有个条件是 找出其中所有出现超过
⌊ n/3 ⌋
次的元素。 - 这个条件给我们的提示就是,不到
⌊ n/3 ⌋
次的人,一视同仁。 - 基于这样的约定,我们才可以设置两个固定坑位之后,遍历数组。
- 也就是说,本来在坑位上的人,如果不足以达到n/3这样的条件,那就可以将他请下来。换言之,我们一直关注的都是当前已经在领奖台上的人,如果不在,只能说明他已经不符合n/3的要求,尽管他曾经票数很多。
- 之后就按照一般的思想进行下去即可。
为了便于理解,再想想n/4的情况
- 这种情况下应该设置3个坑位,并且每次同时任选四个人进行一轮竞争。