Yhtenäiset komponentit ja flood fill
Laske saaret ja nimeä alueet
Yhtenäiset komponentit ja flood fill on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Mikä komponentti on
Yhtenäinen komponentti on solmujen ryhmä, jossa jokaisesta solmusta pääsee kaikkiin muihin. Graafissa voi olla useita erillisiä ryhmiä. 🧩
Komponenttien laskeminen
Laskeaksenne komponentit suorittakaa läpikäynti jokaisesta käsittelemättömästä solmusta. Jokainen uusi aloitus merkitsee kokonaan uuden ryhmän.
Käykää kaikki solmut läpi
Käykää solmut 1:stä n:ään läpi. Kun löydätte edelleen unvisited-tilassa olevan solmun, olette löytäneet uuden tutkittavan komponentin.
for s in range(1, n + 1):
if not visited[s]:
bfs_or_dfs(s)
count += 1Yksi läpikäynti ryhmää kohden
Sisäinen BFS tai DFS merkitsee koko komponentin käsitellyksi, joten ulompi silmukka ohittaa sen seuraavalla kierroksella.
Myös ruudukot ovat graafeja
Kaksiulotteinen ruudukko on piilossa oleva graafi: jokainen solu on solmu, joka on yhdistetty naapureihinsa. Tämä mahdollistaa klassisen flood fill -tekniikan. 🗺️
Neljä suuntaa
Solusta siirrytään yleensä ylös, alas, vasemmalle ja oikealle. Tallentakaa nämä siirtymät suuntavektoreina, jotta koodi pysyy selkeänä.
dirs = [(-1, 0), (1, 0), (0, -1), (0, 1)]Pysykää ruudukon rajojen sisällä
Ennen siirtymistä tarkistakaa, että uusi rivi ja sarake ovat rajojen sisällä. Tämän tarkistuksen ohittaminen aiheuttaa indeksivirheitä tai vääriä vastauksia.
if 0 <= nr < rows and 0 <= nc < cols:
passTäyttäkää yksi alue
Flood fill alkaa yhdestä solusta ja leviää kaikkiin siihen yhteydessä oleviin samantyyppisiin soluihin aivan kuten maalisanko-työkalu.
Saarten laskeminen
Laskeaksenne saaret käykää ruudukko läpi. Kun löydätte uuden maasolun, täyttäkää flood fillillä koko sen saari ja lisätkää laskuriin yksi.
if grid[r][c] == '1' and not seen[r][c]:
flood(r, c)
islands += 1Alueiden merkitseminen
Voitte tallentaa jokaiselle solulle tunnisteen täytön aikana. Sen jälkeen tiedätte heti, mihin alueeseen mikä tahansa solu kuuluu.
Lineaarinen ruudukon kokoon nähden
Jokainen solu käydään läpi kerran, joten flood fill -käsittely ruudukossa toimii ajassa O(rows kertaa cols). Se mahtuu helposti kilpailujen aikarajoihin.
Pikatarkistus
Miten yhtenäiset komponentit lasketaan?
Kertaus
Laskette komponentit kulkemalla jokaisesta käymättömästä solmusta lähtien, ja käytätte ruudukoissa flood fill -menetelmää alueiden merkitsemiseen ja saarten laskemiseen. 🎉
Opi Valmistautuminen ohjelmointihaastatteluihin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 90
- Oppitunnit
- 360
Usein kysytyt kysymykset
Onko oppitunti ”Yhtenäiset komponentit ja flood fill” ilmainen?
Kyllä – oppitunnin ”Yhtenäiset komponentit ja flood fill” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Yhtenäiset komponentit ja flood fill”?
Laske saaret ja nimeä alueet Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.
Kuinka kauan ”Yhtenäiset komponentit ja flood fill”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?
Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Vieryslistat syötteestä
- BFS painottamattomien polkujen lyhimmille reiteille
- DFS, rekursio ja iteratiiviset pinot
- Yhtenäiset komponentit ja flood fill