题目:
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
leetcode原题链接
思路:
对数组中出现的每个元素 进行计数即可,使用列表对象的count()方法
注意,若直接对数组nums使用for循环遍历,代码运行会超时,如文末的【超时代码】。
这里我们用到set()函数,创建一个不重复的元素集temp,再对temp进行for循环遍历,对其中的每个元素进行计数,如果大于len(nums)/2,直接return此时的计数元素。
set()函数效果 如下图:
代码:
class Solution:
def majorityElement(self, nums: List[int]) -> int:
temp=set(nums)
for i in temp:
if nums.count(i)>len(nums)/2:
return i
return False
超时代码:
class Solution:
def majorityElement(self, nums: List[int]) -> int:
for i in nums:
if nums.count(i)>len(nums)/2:
return i