给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数。 假设 Fmax(Fmax \le 100000)Fmax(Fmax≤100000)是数组里最大的数,那么我们只统计 \{0,1,2 \ldots Fmax \}{0,1,2…Fmax} 里每个数出现的次数。 输入格式 第一行 nn 是数组的大小。1 \le n \le 1000001≤n≤100000。 紧接着一行是数组的 nn 个元素。 输出格式 按顺序输出每个数的出现次数,一行一个数。如果没有出现过,则输出 00。 对于例子中的数组,最大的数是 33,因此我们只统计 \{0,1,2,3\}{0,1,2,3} 的出现频数。
时间: 2024-04-13 18:29:26 浏览: 21
我们可以使用一个长度为 Fmax+1 的数组来记录每个数的出现次数。首先将数组初始化为0,然后遍历给定的数组,对于每个元素,将对应位置的计数加1。最后遍历统计数组,输出每个数的出现次数即可。
以下是一个示例的Python代码实现:
```python
n = int(input())
arr = list(map(int, input().split()))
Fmax = max(arr)
count = [0] * (Fmax+1)
for num in arr:
count[num] += 1
for i in range(Fmax+1):
print(count[i])
```
希望能对你有所帮助!如果还有其他问题,请随时提问。
相关问题
给定一个非负整数数组,统计里面每一个数的出现次数。我们只统计到数组里最大的数.假设Fmax(Fmax≤100000)是数组里最大的数,那么我们只统计 {0,1,2…Fmax} 里每个数出现的次数。如何用c语言 做这道题
以下是用C语言实现统计非负整数数组中每个数出现次数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_NUM 100001
int main()
{
int n, i, num;
int count[MAX_NUM] = {0}; // 初始化数组,用于记录每个数出现的次数
printf("请输入数组中元素的个数:");
scanf("%d", &n);
printf("请输入数组中的元素:\n");
for (i = 0; i < n; i++) {
scanf("%d", &num);
count[num]++; // 统计每个数出现的次数
}
printf("0~Fmax中每个数出现的次数如下:\n");
for (i = 0; i <= MAX_NUM; i++) {
if (count[i] != 0) {
printf("%d出现了%d次\n", i, count[i]);
}
}
return 0;
}
```
给定一个非负整数数组 nums,青蛙最初位于数组的第一个元素(下标为 0),数组中的每个元素表示它在该位置可以跳跃的最大长度,请求出它所能跳跃到的最远下标。
你好,给定一个非负整数数组 nums,求青蛙最远可以跳到哪个下标呢?这是一道典型的贪心算法问题,可以使用贪心算法来解决。我们可以从前到后遍历数组,每次记录当前能到达的最远下标,如果当前位置超过了最远下标,则无法到达当前位置,否则更新最远下标。最后返回最远下标即可。
以下是一个示例代码实现:
```
int canJump(int* nums, int numsSize) {
int maxIdx = 0; // 最远能到达的下标
for (int i = 0; i < numsSize; ++i) {
if (i > maxIdx) {
// 当前位置已经到达不了了
return false;
}
maxIdx = fmax(maxIdx, i + nums[i]); // 更新最远下标
}
return true;
}
```
希望能够帮助到您。