【发布时间】:2019-09-24 08:34:24
【问题描述】:
我必须在一个数字序列中找到一个缺失的数字。 输入包含一个介于 0 和 35000 之间的正整数 n,以及范围为 [0..n] 的 n 个唯一数字。 (所以这个范围包含 n+1 个数字)。
我已经用sum={n*(n+1)}/2 和misNum=sum-SumOfNum; 尝试了一些东西,但我找不到让这个工作的方法。
我写了一些代码,但没有使用我之前提到的示例。很明显,这段代码是不完整的,但我不知道如何使它完整。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *v[]) {
int length;
int num;
scanf("%d", &length);
/*scanf(???)*/
int goal=length;
int i;
for(i=0; i!=length; i++){
goal=goal+i-num[i];
};
return goal;
}
输入和输出应该是:
输入:2 “输入” 0 2. 输出:1
输入:3 “输入” 0 3 1. 输出:2
【问题讨论】:
-
您是否必须检查数字序列是否符合预期,即数字是否在正确的范围内,它们的计数是否正确以及您没有重复的数字? (如果不使用数组,最后一个可能是不可能的。)
-
但可能重复的是 C# 而不是 C。