选出矩阵中的众数,排除矩阵中的0和无限大
时间: 2024-05-06 18:01:42 浏览: 18
假设我们的矩阵是 $M$,我们可以先将矩阵中的0和无限大排除掉,然后将剩余的元素存储到一个一维数组 $A$ 中。接下来,我们可以使用哈希表来计算数组 $A$ 中的众数。
具体地,我们可以遍历数组 $A$,对于每个元素 $x$,将其插入到哈希表中。如果哈希表中已经存在元素 $x$,则将其对应的计数器 $count$ 加 1;否则,在哈希表中插入新的元素 $x$,并将其计数器 $count$ 初始化为 1。在遍历完数组 $A$ 后,我们就可以找到数组 $A$ 中的众数。具体来说,我们可以维护两个变量 $max\_count$ 和 $mode$,分别表示数组 $A$ 中出现次数最多的元素的出现次数和数值。初始时,$max\_count$ 和 $mode$ 都可以被赋值为数组 $A$ 中的第一个元素。然后,我们遍历哈希表中的每个元素,更新 $max\_count$ 和 $mode$ 的值即可。
下面是示例代码:
```python
import sys
# 计算数组的众数
def majority_element(nums):
# 使用哈希表来统计数组中每个元素出现的次数
count = {}
for num in nums:
if num in count:
count[num] += 1
else:
count[num] = 1
# 遍历哈希表,找到出现次数最多的元素
max_count, mode = -sys.maxsize, None
for num, cnt in count.items():
if cnt > max_count:
max_count = cnt
mode = num
return mode
# 测试代码
M = [[1, 2, 3], [0, 2, 2], [0, 3, float('inf')]]
A = []
for row in M:
for elem in row:
if elem != 0 and elem != float('inf'):
A.append(elem)
print(majority_element(A)) # 输出 2
```
相关推荐
![m](https://img-home.csdnimg.cn/images/20210720083646.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)