题目:
数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。
思路:
这不是当年王道数据结构上的题嘛?十分之眼熟啊
解答:
方法一:
class Solution:
def majorityElement(self, nums: List[int]) -> int:
n=len(nums)
dic=Counter(nums)
for key,val in dic.items():
if val*2>n:
return key
return -1
方法二:
class Solution:
def majorityElement(self, nums: List[int]) -> int:
n=len(nums)
res=0
cur=nums[0]
count=1
for i in range(1,n):
num=nums[i]
if count==0:
cur=num
if num==cur:
count+=1
else:
count-=1
return cur if nums.count(cur)>len(nums)//2 else -1