【剑指Offer】 28.数组中出现次数超过一半的数字 python实现

题目描述

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

代码

双重for循环

# -*- coding:utf-8 -*-
class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        # write code here
        res = []
        for j in numbers:
            count = 0
            for n in numbers:
                if j == n:
                    count +=1
            res.append(count)
        result = max(res)
        if result <= len(numbers)/2:
            return 0
        else:
            index = res.index(result)
            return numbers[index]

s = Solution()
res = s.MoreThanHalfNum_Solution([1,2,3,2,2,2,5,4,2])
print(res)

用字典解决

# -*- coding:utf-8 -*-
class Solution:
    def MoreThanHalfNum_Solution(self, numbers):
        dict = {}
        for no in numbers:
            if not dict.has_key(no):
                dict[no] = 1
            else:
                dict[no] = dict[no] + 1
            if dict[no] > len(numbers)/2:
                return no
        return 0
发布了99 篇原创文章 · 获赞 6 · 访问量 3972

猜你喜欢

转载自blog.csdn.net/weixin_42247922/article/details/103996394
今日推荐