Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋
times.
You may assume that the array is non-empty and the majority element always exist in the array.
Example 1:
Input: [3,2,3]
Output: 3
Example 2:
Input: [2,2,1,1,1,2,2]
Output: 2
<思路>最开始想用字典,统计每个数字出现次数。思路简单,不过时间上来讲比较慢。
import numpy as np
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
half = len(nums)/2
dic = {}
for num in nums:
if num in dic:
dic[num] +=1
else:
dic[num] = 1
for key,val in dic.items():
if val>half:
return key
看discuss里面有种取巧的方式,很聪明。将数组排序,然后取中间的数,一行就可以。
import numpy as np
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
return sorted(nums)[len(nums)/2]