输入n,然后给定一个包含0~n 中n个数的数组nums ,找出0~n 这个范围内没有出现在数组中的那个数。 第一行输入n,第二行输入n个数,每个数的值小于等于n。
例如,输入:
3
3 0 1
输出: 2
再例如,输入:
4
1 4 2 0
输出: 3
#include<stdio.h>
int main()
{
int n, nums[100] = { 0 }, shadow[100] = { 0 };
scanf_s("%d", &n);
for (int i = 0; i < n; i++)
{
scanf_s("%d", &nums[i]);
if (nums[i] > n)
{
printf("error");
return 0;
}
shadow[nums[i]] = 1;
}
for (int i = 0; i < n; i++)
{
if (shadow[i] == 0)
printf("%d", i);
}
}
核心思想是定义一个映射数组,将nums中被输入到的数字做标记,最后输出没被改变的数字。