给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3]
输出: 3
示例 2:
输入: [2,2,1,1,1,2,2]
输出: 2
思路:
若列表中存在这种数量过半的众数,则列表排序后,此列表正半索引的元素一定是此众数。
代码:
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
return nums[int(len(nums)/2)]
分析:
Python内置sort函数使用蒂姆排序,时间复杂度O(nlogn)空间复杂度O(n)
有序列表检索,时间复杂度O(1)
参考:
《剑指Offer:名企面试官精讲典型编程题》P205 面试题39