Это вопрос, заданный мне очень и очень известным MNC. Вопрос в следующем ...
Введите двумерный массив N * N, состоящий из 0 и 1. Если A (i, j) = 1, то все значения, соответствующие i-й строке и j-му столбцу, будут равны 1. Если уже есть 1, он остается равным 1.
В качестве примера, если у нас есть массив
1 0 0 0 0
0 1 1 0 0
0 0 0 0 0
1 0 0 1 0
0 0 0 0 0
мы должны получить вывод как
1 1 1 1 1
1 1 1 1 1
1 1 1 1 0
1 1 1 1 1
1 1 1 1 0
Входная матрица заполнена редко.
Возможно ли это менее чем за O (N ^ 2)?
Дополнительного места не было, было другое условие. Я хотел бы знать, если есть способ достичь сложности, используя пробел <= O (N). </p>
P.S .: Мне не нужны ответы, которые дают мне сложность O (N * N). Это не домашняя проблема. Я много пытался и не смог найти правильного решения, и подумал, что смогу найти здесь некоторые идеи. Оставьте печать в стороне для сложности
Моя грубая идея состояла в том, чтобы, возможно, динамически исключить количество пройденных элементов, ограничив их до 2N или около того. Но я не мог получить правильное представление.