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
本文介绍了一种寻找数组中出现次数超过一半的元素(多数元素)的算法。通过遍历列表并使用字典记录每个元素的出现次数,我们可以找到多数元素。此外,还提供了一种更高效的解决方案,即在遍历过程中,一旦发现某个元素的计数超过数组长度的一半,立即返回该元素。
590

被折叠的 条评论
为什么被折叠?



