Finden Sie benachbarte Elemente in einer 2D-matrix
Ich habe eine 2-dimensionale matrix der Ordnung m *n
00 01 02 03 ....0n
10 11 12 13 ....1n
20 21 22 23 ....2n
..
m0 m1 m2 m3 ...mn
Aus dieser, da ein element , muss ich schreiben, eine Methode, die zurückgibt, die angrenzenden Elemente.
Tüpfel sind entweder horizontal, vertikal oder Diagonal benachbart sind.
Beispielsweise benachbarte element 01 00,02,10,11,12
angrenzenden element der 00 01 ,10,11
benachbarte element 11 ist 00,01,02,10,12,20,21,22
Kann jemand mir helfen mit einer optimistischen Algorithmus, um dieses Problem zu lösen?
- Was erwartete Ergebnis Eingabe wiederholt werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Daraus ergibt sich die Antwort:
3
4
7
11
12
(die Elemente neben der 8).
foreach (int j in new[] { row - 1, row, row + 1 })
deutlicher machen, dass es eine Feste Liste, aber entschied sich für die einfachere und schnellerefor
loop statt.Scheint es Elemente im 2d-array(eine[n][m]) sind zunehmend horizontal und vertikal . Also für die gegebene Frage, die wir brauchen, um zu finden, die den index des Elements zuerst. Also, wenn wir finden das element in schnelleren Weg, dann können wir optimieren die Lösung .
Die Frage ist, wie finden wir es in einer effizienten Art und Weise.
Ein Ansatz ist nehmen Sie das mittlere element der matrix und überprüfen element mit
Nun rekursiv aufrufen der gleichen Funktion basiert auf unserem Suchraum.
Zeit Komplexität unserer Funktion wie folgt .
HINWEIS: In der Zeit-Funktion n repräsentiert die Anzahl der element, nicht aber keine Zeilen erwähnt .n=(no_of_rows)*(no_of_columns)
so out-Zeit-Funktion wird
T(n)=3T(n/4) T(n)=T(n/4)
Aber T(1)=1 (raten gegeben elemet gefunden in array)
Reden log zur Basis 2 auf beiden Seiten
(log[n])/2=i
====> ich=log(sqrt(n))
Substitution von Gleichung 1 erhalten wir T(n)=3power(log[sqrt(n)])
Also nach der Suche nach dem element mit dem index finden wir es Nachbarn .
Sagen wir element in a[i][j] dann drucken
zur Verfügung gestellt
Nehme an, Sie haben matrix
string [n,m]
können Sie das Ergebnis durch Abflachung der matrix, im folgenden Beispielcode: