从数组中选择下一个值,即使它以循环顺序变化

Selecting Next value from array even if it is mutated in a cyclic order

提问人:tycoon 提问时间:11/17/2023 最后编辑:Davetycoon 更新时间:11/17/2023 访问量:35

问:

我有一个具有唯一值的数组,比如说 [23,4,12,19,15,17],我现在选择了 12 个。现在这个数组被传递到一个函数(我无权访问),它可以删除或插入多个元素。我需要能够选择数组中的下一个值,即这里的 19(如果 19 被删除,我应该选择 15)。

我能够通过跟踪某个数据库中的选定值并简单地选择下一个值来实现这一点。但是,当我选择的值被删除时,它就会产生问题。

现在你可以说我的代码看起来像这样

def onClick:
    prevSelected = getFromDatabase()
    # prevSelected = 12

    array = get_array();
    # array = [23, 4, 12, 19, 15, 17]

    newIdx = -1
    for idx in range(len(array)):
        if prevSelected == array[idx]:
           # getNextIdx returns idx + 1 when idx + 1 is in range
           # otherwise it will return 0
           newIdx = getNextIdx(idx)

    prevSelected = array[newIdx];
    updatePrevInDatabase(prevSelected)

在我删除所选值之前,这工作正常。我尝试同时使用索引和先前选择的值,但找不到任何解决方案。

我无法控制数组,它可以具有可变长度,因此我无法在数据库中保存数组的整个副本,并且我需要在 O(1) 空间复杂性中执行此操作。有什么方法可以做到这一点。

数组 算法 迭代

评论


答: 暂无答案