检查号码列表是否顺序

时间:2013-03-13 02:56:55

标签: java

我对Java编程有很多外行问题。

我想编写一个函数来检查数字列表是否是顺序的。

说[1,2,3,4,5],该函数将返回true,

但对于[1,3,4,9,10],函数将返回false。

有人可以帮助我吗?

非常感谢!

3 个答案:

答案 0 :(得分:3)

编写一个查看列表中每个元素的循环。

对于列表中的每个位置i,测试列表 i + 1等于列表 i + 1

您可以自己编码作为练习。 (别忘了处理边缘情况......)


更新: ...将此问题视为学习练习的人。

简单的直接实施方法可能是最好的想法;例如@乔的最终答案。然而,简单的方法并不总是很好......或者根本不可能:

  • 某些Java List实现的get方法为O(N)。这将导致整体O(N^2)算法。
  • 有时只能使用迭代器访问列表;即list.get(i)可能不是一种选择。

在这种情况下,您可以使用迭代器一次通过列表来实现算法。你需要在变量中保留“前一个元素”,等等。

答案 1 :(得分:0)

逻辑很简单。只需获取第一个数字并检查它是否与下一个值匹配。就像检查相邻值一样。如果条件在任何时候都失败,则中断。如果所有if条件都为真,则列表将是顺序的。

答案 2 :(得分:0)

正如Stephen C所说,这是一个非常简单的逻辑

int a[] = { 1, 2, 3, 4, 5,7 };
        boolean flag = true;
        for (int i = 0; i < a.length - 1; i++) {
            if (a[i + 1] != a[i] + 1) {
                flag = false;
                break;

            }
        }
        System.out.println("Flag is " + flag);