zoukankan      html  css  js  c++  java
  • 39-数组中出现次数超过一半的数字

    题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

    def num_more_half(nums):
        if len(nums)<1:
            return None
        res = nums[0]
        cnt = 1
        for num in nums:
            if num == res:
                cnt += 1
            else:
                cnt -= 1
                if cnt == 0:
                    res = num
                    cnt = 1
    
        return res
    

    注:

    方法1:可以通过一个字典,遍历一遍数组,统计出各个数字出现的次数,然后输出次数超过一半的数字

    方法2:先取一个目标数,如第一个数字,往后遍历,使用一个变量count进行计数。如果再次出现,则count+1,如果出现其他数字,则count-1。当count为0时,用当下的数字代替目标数字,继续往后遍历。最后的目标数字即为数量超过一半的数字。

  • 相关阅读:
    获取客户及登录IP(Java)
    js初步
    数组方法
    BOM ;浏览器对象模型
    js事件
    EventListener()
    JS面向对象
    正则表达式
    -CSS盒模型和float
    EventListener()
  • 原文地址:https://www.cnblogs.com/kingshine007/p/11360393.html
Copyright © 2011-2022 走看看