题解 | #数组中出现次数超过一半的数字#

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

http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163

  1. 创建dict,遍历一遍数组,将每个值出现的次数统计一遍,再找出统计量最大的值;
  2. 直接对数组排序,取排序后的中间值;
  3. 求众数,若cnt=0,取当前值为众数,若cnt>0,则判断众数是否和当前值相等,若相等则cnt++,若不想等则cnt--
class Solution:
    def MoreThanHalfNum_Solution(self , numbers: List[int]) -> int:
        # write code here
        max_group = -1
        cnt = 0
        for v in numbers:
            if max_group == -1 or cnt == 0:
                max_group = v
                cnt += 1
            elif max_group != v:
                cnt += -1
            else:
                cnt += 1

        return max_group 

                
            

全部评论

相关推荐

10-10 17:54
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务