Menu
CoddyTech

Number of Provinces

ŚrednieUnion-findGrafypython iconjava iconcpp iconc iconjs icon+10

Jest n miast ponumerowanych od 0 do n-1. Otrzymujesz macierz n × n isConnected w postaci listy wierszy: isConnected[i][j] ma wartość 1, gdy droga łączy bezpośrednio miasto i z miastem j, a 0, gdy tak nie jest. Drogi działają w obu kierunkach, więc macierz jest symetryczna, a każde miasto jest uznawane za połączone samo ze sobą.

Prowincja to grupa miast, z których każde może dotrzeć do pozostałych bezpośrednio lub przez inne miasta, i z której nie prowadzi żadna droga na zewnątrz. Zwróć liczbę prowincji.

Funkcja

findCircleNum(isConnected: integer-2d-array) → integer
isConnectedinteger-2d-array
macierz n × n, 1, gdy droga łączy bezpośrednio dwa miasta
Zwracainteger
liczba prowincji

Ograniczenia

  • 1 ≤ n ≤ 150, gdzie n = isConnected.length
  • isConnected[i].length = n
  • isConnected[i][j] ma wartość 0 lub 1
  • isConnected[i][i] = 1
  • isConnected[i][j] = isConnected[j][i]

Przykłady

Wejście
isConnected = [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]]
Wyjście
2
Wyjaśnienie
Miasto 0 ma drogę do miasta 3, a miasto 1 ma drogę do miasta 2. Żadna droga nie łączy tych dwóch par, więc są 2 prowincje.

lock icon+15 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Każda droga otwiera się w określonym dniu. Czy potrafisz znaleźć pierwszy dzień, w którym wszystkie miasta będą należeć do jednej prowincji?

Zresetuj kod
def findCircleNum(isConnected):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

isConnected = [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]]

Oczekiwane

2