第十题(HashMap)给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。例:输入:nums = [2,2,1,1,1,2,2]输出:2
时间: 2024-08-13 10:05:27 浏览: 58
给定一个大小为 n 的数组 `nums`,要找到其中的多数元素,可以使用哈希表(HashMap 或者字典)的数据结构和一些基本的算法技巧。这里介绍一种简单的方法:
1. 创建一个哈希表(或映射)来存储每个元素及其出现的次数。
2. 遍历数组,对于每个元素,更新其在哈希表中的计数。
3. 初始化一个变量 `candidate` 为数组的第一个元素,同时设置一个计数器 `count` 为 1。
4. 再次遍历数组,对于每个元素,如果它等于 `candidate`,则增加 `count`;否则,如果 `count` 等于当前元素的计数,将 `candidate` 更新为当前元素并重置 `count` 为 1。
5. 遍历结束后,`candidate` 就是多数元素,因为它要么是唯一没有被更新的元素(如果数组中有两个相同的多数元素),要么是计数最多的元素。
以下是 Python 代码示例:
```python
def majorityElement(nums):
count = 1
candidate = nums
map = {candidate: count}
for num in nums[1:]:
if num in map and map[num] < count:
count -= 1
map.pop(num)
else:
count += 1
map[num] = count
return candidate
```
阅读全文