【发布时间】:2022-01-18 19:01:52
【问题描述】:
我在下面需要使用队列的地方创建了算法的一部分,但在 Java 中,我无法在迭代队列时修改队列。我收到了ConcurrentModificationException。
对此我能做些什么?我已经考虑了好几个小时了。
m, n = len(mat), len(mat[0])
visited = [[False] * n for row in range(m)]
q = deque()
destinations = set()
def should_visit(row, col):
"""Return true if (row,col) is a valid position not processed yet"""
return 0 <= row < m and 0 <= col < n and \
mat[row][col] != 'o' and not visited[row][col]
for r in range(m):
for c in range(n):
if mat[r][c] == 'r':
q.append((r, c))
visited[r][c] = True
elif mat[r][c] == 'b':
destinations.add((r, c))
dist = 1 # the level in breadth-first-search.
while q:
for _ in range(len(q)):
(r, c) = q.popleft()
for (new_r, new_c) in ((r - 1, c), (r + 1, c), (r, c - 1), (r, c + 1)):
if should_visit(new_r, new_c):
if (new_r, new_c) in destinations:
return dist
q.append((new_r, new_c))
visited[new_r][new_c] = True
dist += 1
【问题讨论】:
-
@BenAnderson 但是如何使用这种方法将Last 和 removeFirst 添加到队列中?
-
@user17405569 考虑使用迭代器吗?
-
@rzwitserloot 我被告知我的代码给出了这个错误。
-
@BenAnderson 但是如何使用迭代器“removeFirst”和“addLast”?