169. 求众数-leetcode 摩尔投票算法

提问: 给定一个int型数组,找出该数组中出现次数大于数组长度一半的int值。

解决方案: 遍历该数组,统计每个int值出现次数,再遍历该数组,找出出现次数大于数组长度一半的int值。

两种线性解法:
一种是放入一个哈希表中,然后同数加一,
还有一种就是遍历数组,然后发现相同就给maj加一,如果不同就减一,到0就把结果换成变成0的数,最后得到的数就是答案。

class Solution {
   func majorityElement(_ nums: [Int]) -> Int {
        var maj = 0
        var num = nums[0]
        for n in nums {
            if num == n {
               maj = maj + 1
            } else {
                if maj > 0 {
                    maj = maj - 1
                } else {
                    num = n
                }
            }
        }
        return num
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容