计算数组索引

时间:2012-10-22 23:35:32

标签: arrays indexing counting

如果我有一组数字,如[5,2,3,2,0,2]

我想计算一下我可以连续索引数组的次数,直到我们来到我们已经访问过的索引,如下所示:

A[0] = 5 
A[5] = 2
A[2] = 3
A[3] = 2 stop here because we already indexed 2.

所以我的问题是:没有使用额外的数据结构来存储以前访问过的索引,有没有办法告诉我的程序何时停止索引?

2 个答案:

答案 0 :(得分:1)

您似乎将此数组视为有向图。如果是这样,那么你真正要求的是如何在有向图中检测周期。

请参阅:

具体回答你的问题:如果你在迷宫中闲逛,你怎么知道你以前去过某个特定的路口?您可以考虑删除面包屑或解开线程以提醒您去过的地方。这是一回事。您需要使用“已访问”标记注释原始数组,或者保留您在自己的数组中访问过的索引的副本。

答案 1 :(得分:0)

如果从初始化为无效值的数组元素(例如-1)开始,那么如果已经分配了数组元素,则可以停止,如下面的伪代码所示:

if (A[x] == -1)
    A[x] = y
else
    stop