Почему выдаёт ошибку list indices must be integers or slices, not type
import collections
defaultdict = collections.defaultdict(list)
deque=collections.deque
List=[]
class Solution:
def shortestAlternatingPaths(self, n: int, red_edges: List[List[int]], blue_edges: List[List[int]]) -> List[int]:
g = [defaultdict(list), defaultdict(list)]
for i, edges in enumerate([red_edges, blue_edges]):
for u, v in edges:
g[i][u].append(v)
dist = [[0] + [float('inf')] * (n-1) for _ in range(2)]
q = deque([(0, 0, 0), (0, 0, 1)])
while q:
d, u, color = q.popleft()
d += 1
color ^= 1
for v in g[color][u]:
if dist[color][v] > d:
dist[color][v] = d
q.append([d, v, color])
return [x if (x := min(a, b)) != float('inf') else -1 for a, b in zip(*dist)]
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Вы определили переменную List как список. А дальше пытаетесь использовать её в определении метода. И, естественно, конструкция вида List[int] выдаёт эту ошибку. Это всё равно как в коде написать:
a = []
b = a[int] # what???
Скорее всего вы хотели написать это:
from typing import List
...
def shortestAlternatingPaths(self, n: int, red_edges: List[List[int]], blue_edges: List[List[int]]) -> List[int]:
