Swift-数组中出现次数超过一半的数字

数组中超过一半的数字有很多解决的方式,排序之后求出中间值就是超过一半的数字,也可以通过Hash表统计每个数字出现的次数.我们尝试一种更简单的方式,初始化两个变量,一个记录数字,一个记录次数,如果遍历的数字和之前相当加1,如果不相同减1,如果为0 ,那么变量重新赋值.

func moreHalfNumber(data:[Int]) -> Int {
    var num = 0
    var count = 0
    for i in 0..<data.count {
        if count == 0 {
            num = data[i]
            count = 1
            break
        }
        if num == data[i] {
            count += 1
        } else {
            count -= 1
        }
    }
    return num
}

var moreHalfData:[Int] = [2,3,4,5,6,2,2,2,2]
var moreNum = moreHalfNumber(moreHalfData)
print("FlyElephant:超过一半的数字:\(moreNum)")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容