简单的题目,谢谢大家了,帮帮忙!
如何判断6个数,是连一起的比如 2 3 4 1 6 5
这6个数就是连一起的
--------------------编程问答--------------------
什么叫连在一起的?有什么判断标准没?我还真没看出来这几个数哪里连了....... --------------------编程问答-------------------- 不知道什么意思
--------------------编程问答-------------------- 至少要有点逻辑吧。你这几个数看起来也没连在一起啊。 --------------------编程问答-------------------- 连一起了啊?就是把这几个数排序出来是 连一起的,
中间只相隔一 --------------------编程问答-------------------- 对六个数字进行按顺序排列(Array.Sort),
然后:
bool IsContinueslyNumbers(int[] array)
{
for(int i=1;i<array.Length;i++)
{
if((array[i] - array[i-1]) != 1)
return false;
}
return true;
} --------------------编程问答-------------------- 可以用空间换时间,例如用hashtable,一次遍历即可
遍历过程中检验有无重复数字,并求得最大数字和最小数字,最后最大数字-最小数字=n-1即是连续 --------------------编程问答-------------------- 谢谢楼上的,你真厉害 --------------------编程问答-------------------- 连续的数组有什么规律?
1、除数组长度的的余数不会重复(这里长度是6)
2、最大数和最小数相差长度减1
参考如下代码:
int[] a = { 2, 3, 4, 1, 6, 5 };
bool[] b = new bool[a.Length];
int min = int.MaxValue, max = int.MinValue;
bool repeat = false; // 余数重复
foreach (int i in a)
{
if (b[i % a.Length])
{
repeat = true;
break;
}
b[i % a.Length] = true;
min = i < min ? i : min;
max = i > max ? i : max;
}
if (!repeat && max - min == a.Length - 1)
Console.WriteLine("是一个连续的数组");
--------------------编程问答-------------------- 8楼的答案时间效率和空间效率都很不错,呵呵 --------------------编程问答-------------------- 同意8楼的
补充:.NET技术 , C#