跳至主要內容

剑指 Offer 39. 数组中出现次数超过一半的数字

ITCharge小于 1 分钟

剑指 Offer 39. 数组中出现次数超过一半的数字open in new window

  • 标签:数组、哈希表、分治、计数、排序
  • 难度:简单

题目链接

题目大意

给定一个数组 nums,其中有一个数字出现次数超过数组长度一半。

要求:找到出现次数超过数组长度一半的数字。

解题思路

可以利用哈希表。遍历一遍数组 nums,用哈希表统计每个元素 num 出现的次数,再遍历一遍哈希表,找出元素个数最多的元素即可。

代码

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        numDict = dict()
        for num in nums:
            if num in numDict:
                numDict[num] += 1
            else:
                numDict[num] = 1
        max = 0
        max_index = -1
        for num in numDict:
            if numDict[num] > max:
                max = numDict[num]
                max_index = num
        return max_index