目录
一、题目要求
给定一个大小为 n 的数组,找到其中的多数元素。
多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例:
- 输入:[3,2,3]
- 输出:3
- 输入:[2,2,1,1,1,2,2]
- 输出:2
二、解题思路
一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计数 +1 , 遇到不同的则计数 -1
其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开始互拼,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。
示例: "23335" 首先从字符 2 开始计数 1 ,遇到 3 ,不同则 -1 ,互拼消耗 重新从剩下的 "335" 开始的过程,这时候保存的字符为 3 ,遇到 3 则计数 +1 , 遇到5则计数 -1 ,在计数不为 0 时,走到末尾保存的字符就是个数超过n/2 的字符
三、完整代码演示

文章介绍了如何找到一个数组中出现次数大于n/2的多数元素。解题思路是通过遍历数组,用一个变量保存当前可能的多数元素并计数,遇到相同元素计数加一,不同则减一,当计数为0时更换多数元素候选。完整代码展示了这一过程,适用于解决此类编程问题。
最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



