遍历列表时更新迭代器,直至找到值"0"并返回其索引
解决方案:跳跃遍历找0的索引
这个逻辑和Sidewinder算法无关,它就是一个固定规则的跳跃式列表遍历——核心是每次用当前索引对应的值更新迭代位置,直到找到值为0的索引。
实现思路
- 从起始索引(默认0)开始遍历
- 每一步用当前位置的数值作为下一次的索引
- 找到值为0的位置时返回其索引
- 可选添加循环检测,避免因列表无0或出现循环跳转导致死循环
代码实现(Python)
def find_zero_index(arr): current_idx = 0 visited = set() while current_idx < len(arr): if arr[current_idx] == 0: return current_idx # 检测循环,防止无限遍历 if current_idx in visited: raise ValueError("列表中无0,或出现循环跳转") visited.add(current_idx) # 更新索引为当前位置的数值 current_idx = arr[current_idx] raise ValueError("列表中不存在0")
简化版(确定无循环且必有0时使用)
如果能保证列表里一定有0,且不会出现跳转循环(比如索引值不会指向已访问过的位置),可以去掉循环检测逻辑:
def find_zero_index_simple(arr): current_idx = 0 while arr[current_idx] != 0: current_idx = arr[current_idx] return current_idx
示例验证
对应你示意图的跳转流程:假设列表为[2, x, 1, 1, 4, x, x, x, 2, x, 0],调用函数后会依次跳转0→2→3→4→8→10,最终返回10,完全符合你的预期。
补充说明
Sidewinder算法是用于生成网格迷宫的随机路径算法,核心逻辑是随机选择横向/纵向扩展路径,和这种固定规则的跳跃遍历没有关联,不用混淆两者。
内容的提问来源于stack exchange,提问作者Leimomi Bong
相关产品推荐
相关产品推荐

