我对这个任务有一个问题:
写一个C#程序,它将接受一个整数列表,并检查需要多少个整数才能完成这个范围。例如,1、3、4、7、9、1-9之间的-> 2、5、6、8不在列表中。因此,输出将是4。
下面是该任务的代码:
public class Example
{
public static int consecutive_array(int[] input_Array)
{
Array.Sort(input_Array);
int ctr = 0;
for (int i = 0; i < input_Array.Length - 1; i++)
{
ctr += input_Array[i + 1] - input_Array[i] - 1;
}
return ctr;
}
public static void Main()
{
Console.WriteLine(consecutive_array(new int[] { 1, 3, 5, 6, 9 }));
Console.WriteLine(consecutive_array(new int[] { 0, 10 }));
Console.ReadLine();
}
}我的问题是,程序如何知道数组从0到9。我们已经定义了数组的长度。
发布于 2018-06-12 02:52:19
还不清楚你的问题是什么。既然你已经完成了任务,你至少应该至少了解代码是如何工作的。如果代码不是你写的,那么也许你应该问问你复制代码的人。如果这不是一个选项,那么单步执行/调试代码。
为了解决这个问题,我会用稍微不同的方式来解决:
您知道长度应该是最大值和最小值之间的差值,并且知道长度有多长,所以这应该是一个简单的算术算法,用于确定input_Array的长度与顺序满时的长度之间的差值:
public static int consecutive_array(int[] input_Array)
{
// we know the array length SHOULD be ==( max - min + 1)
Array.Sort(input_Array);
int fullLength = (input_Array[input_Array.Count()-1] - input_Array[0] + 1);
return (fullLength - input_Array.Length);
}发布于 2018-06-12 02:31:02
您正在从数组的长度中减去1,并使用小于运算符。这将有效地在结束前切断它的1个项目。
https://stackoverflow.com/questions/50803956
复制相似问题