- 给定一个长度为n的整型数组,已知其中一个数字的出现次数超过数组长度的一半,找出这个元素 ## 输入格式 - 一个长度为n的数组,其中某个元素的出现次数大于n/2 ## 输出格式 - 一个整数
时间: 2024-10-21 17:08:30 浏览: 53
这个问题可以通过哈希表(Hash Table)来解决,也被称为“摩尔投票法”或“多数元素查找”。我们可以遍历数组,对于每一个元素,都在哈希表中增加其计数。由于假设存在一个元素出现次数超过数组长度的一半,所以当遍历到数组一半大小的时候,哈希表中该元素的计数肯定是最高的。之后的遍历过程中,只要遇到相同的元素,就无需再做记录,因为无论如何它的计数都不会低于已知的最高值。
下面是一个简单的Python实现:
```python
def majorityElement(nums):
count_dict = {}
for num in nums:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
for key, value in count_dict.items():
if value > len(nums) // 2:
return key
# 如果没有找到出现次数超过一半的元素,返回任何一个键(这里不存在这种情况)
# 因为我们知道一定有一个元素满足条件
return next(iter(count_dict))
# 示例
nums = [2,2,1,1,1,2,2]
print(majorityElement(nums)) # 输出: 2
```
在这个例子中,函数`majorityElement`首先创建一个空的字典`count_dict`来存储元素及其计数。然后遍历数组,更新计数。最后再次遍历字典,找到出现次数超过`n / 2`的元素并返回。
阅读全文