剑指offer28-数组中出现次数超过一半的数字

题目描述

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

示例

输入      [1,2,3,2,2,2,5,4,2]

返回值   2

知识点回顾

 暴力轮询==

代码

# -*- coding:utf-8 -*-
class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        lenth=len(numbers)//2
        for i in range(lenth+1):         //只需看从前半部分元素开始轮询,用flg记录轮询到的元素i出现次数
            flg=1
            for j in numbers[i+1:]:
                if j==numbers[i]:
                    flg+=1
            while flg>lenth:             //超过一半时,输出元素i
                return numbers[i]
        return 0
#校验
a=Solution() a.MoreThanHalfNum_Solution([2,2,2,2,2,1,3,4,5])

 

 

posted @ 2020-11-25 20:02  foolangirl  阅读(84)  评论(0编辑  收藏  举报