题目:给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
def majorityElement(nums):
nums.sort() # list.sort() 直接在原列表进行排序,无返回值
n = len(nums)
reslut = nums[n//2]
return result
# 时间复杂度O(nlogn)
# 空间复杂度O(n)
def majorityElement(nums):
counts = {}
for elem in nums:
counts[elem] = counts.get(elem, 0) + 1
if counts[elem] > len(nums)/2:
return elem
# 时间复杂度 空间复杂度都为O(n)
def majorityElement(nums):
winner = None
power = 0
for soldier in nums:
if power = 0:
winner = soldier
if soldier == winner:
power += 1
else:
power -= 1
return winner
此方法时间和空间复杂度分别为 O(N) 和 O(1) ,为本题的最佳解法。