题目

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

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2

限制:
1 <= 数组长度 <= 50000

答案1

  1. from typing import List
  2. class Solution:
  3. def majorityElement(self, nums: List[int]) -> int:
  4. res = sorted(nums)[len(nums) // 2]
  5. return res
  6. Solution().majorityElement([1, 2, 3, 2, 2, 2, 5, 4, 2])

Note

先排序,中位数就是大于一般的那个数

答案2

  1. from typing import List
  2. class Solution:
  3. def majorityElement(self, nums: List[int]) -> int:
  4. count = 0
  5. card = 0
  6. t = 0
  7. for i in nums:
  8. if count == 0: card = i
  9. if card == i:
  10. t = 1
  11. else:
  12. t = -1
  13. count += t
  14. print(card)
  15. return card

Note

摩尔投票法