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
这个题目比较简单,题目可以理解为求出现次数最多的元素。解题思路:遍历整个列表,保存各元素及计数到字典。为了少遍历一次字典,增加一个元组用来保存次数最多元素的值和次数。
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
counts = {}
major = (0,0) #(number,count)
for i in nums:
if i in counts:
counts[i] += 1
else:
counts[i] = 1
if counts[i] > major[1]:
major = (i,counts[i])
return major[0]
44 / 44 test cases passed. | Status: Accepted |
Runtime: 48 ms |
在论坛看到一种时间复杂度低一些的思路,每遍历一个元素,更新计数后,将计数与字典长度的一半做比较。大于这个值直接返回该元素。我觉得这个方法更好
class Solution(object):
def majorityElement(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
len2 = len(nums)//2
counts = {}
#major = (0,0) #(number,count)
for i in nums:
if i in counts:
counts[i] += 1
else:
counts[i] = 1
if counts[i] > len2:
return i
return