力扣刷题 面试题 17.10. 主要元素
方法1
class Solution:
def majorityElement(self, nums: List[int]) -> int:
for obj in set(nums):
if nums.count(obj)>len(nums)/2:
return obj
return -1
方法2
下面这个会超时,思路没问题,即遍历到一半都没有出现数量大于一半的数,那就不可能有这样的数了
class Solution:
def majorityElement(self, nums: List[int]) -> int:
for i in range(len(nums)//2+1):
if nums.count(nums[i])>len(nums)/2:
return nums[i]
return -1
原因是没有排除重复计算相同数字
方法3
所以加一个记忆数组用于记录已遍历的元素
class Solution:
def majorityElement(self, nums: List[int]) -> int:
pre=[] #加一个已遍历数组
for i in range(len(nums)//2+1):
if nums[i] in pre: #如果该数字已经遍历过就跳过,继续循环
continue
pre.append(nums[i])
if nums.count(nums[i])>len(nums)/2:
return nums[i]
return -1
浙公网安备 33010602011771号