【题目描述】 给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。 假设 Fmax(Fmax<10000) 是数组里最大的数,那么我们只统计{0,1,2.....Fmax} 里每个数出现的次数。 【输入】 第
时间: 2024-10-05 21:01:43 浏览: 46
信息学奥赛1115:直方图.cpp
【题目描述】:这个问题是一个常见的编程任务,叫做“计数范围内的元素出现次数”。给定一个非负整数数组,你需要计算从0到数组中最大值(假设这个最大值小于10000)范围内,每个整数出现的次数。为了简化处理,你不需要对大于最大值的数字做计数。
【输入】:输入包括一个非负整数数组,例如 [4,3,2,7,8,2,3,1]。这里的最大值是8,所以实际上只需要关注0到8这九个数字的出现情况。
【输出】:输出应该是一个长度为9的整数数组,对应着从0到8这九个数字的出现次数,比如 [1,1,2,1,0,2,2,1,1]。
【解决方案】:可以使用哈希表(HashMap 或者 Python 中的 Counter)来解决此问题。遍历数组,对于每个元素,检查它是否在有效范围内,然后更新对应的计数。
【Python 示例代码】:
```python
def count_in_range(nums):
max_num = max(nums)
if max_num > 10000:
return [0] * 10001
counter = [0] * (max_num + 1)
for num in nums:
counter[num] += 1
return counter[:max_num+1]
# 测试示例
nums = [4,3,2,7,8,2,3,1]
print(count_in_range(nums)) # 输出:[1, 1, 2, 1, 0, 2, 2, 1, 1]
```
阅读全文