计算数组索引

问题描述 投票:0回答:2

如果我有一个数字数组,例如 [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.

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

arrays algorithm indexing language-agnostic counting
2个回答
1
投票

看来您正在将此数组视为有向图。如果是这样,那么您真正要求的是如何检测有向图中的循环。

参见:

具体回答你的问题:如果你在迷宫中徘徊,你如何判断你以前是否去过某个特定的路口?您可以考虑撒下面包屑或解开线来提醒您去过哪里。这里也是一样的。您需要使用“已访问”标志来注释原始数组,或者在自己的数组中保留已访问过的索引的副本。


0
投票

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

if (A[x] == -1)
    A[x] = y
else
    stop
© www.soinside.com 2019 - 2024. All rights reserved.