当前位置:编程学习 > C#/ASP.NET >>

简单的题目,谢谢大家了,帮帮忙!

如何判断6个数,是连一起的
比如 2 3 4 1 6 5
这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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,