Zusammenfassung h?ufiger Array-Fragen in Java-Interviews (1)
Nov 06, 2020 pm 03:53 PMSchwierigkeitsgrad der Frage: * *
(Lernvideo-Empfehlung: Java-Kurs)
1. Sortierreihenfolge
[Titel]
Gibt den sortierten Wert eines numerischen Arrays zurück, z. B. Daten [6,2 ,5 ,0] gibt [4,2,3,1]
[Code]
package swear2offer.array; import java.util.Arrays; public class SortSequence { /** * 返回一個(gè)數(shù)字?jǐn)?shù)組的排序值 * 比如數(shù)據(jù) [6,2,5,0] 的返回是 [4,2,3,1] * */ public int[] compare(int[] a) { int i,j,n; n = a.length; int [] c = new int[n]; //數(shù)組下標(biāo)從0開始,但是輸出的次序從1開始,所以需要初始化數(shù)組為1 for (i=0; i<n; i++) { c[i]++; } for (i=0; i<n; i++) { for (j=0; j<i; j++) { if (a[j]<a[i]) c[i]++; else c[j]++; } } return c; } public static void main(String[] args) { int[] a = {6,2,5,0}; System.out.println(Arrays.toString(new SortSequence().compare(a))); } }
[Denken]
Der normale Weg, die Reihenfolge zu erhalten, besteht darin, jedes Element mit allen anderen Elementen zu vergleichen und dann die Gr??e zu ermitteln order , aber hier wird die trapezf?rmige Vergleichsreihenfolge verwendet.
2. Array-Index-Hilfsdatensatz
[Titel]
Gegebenes Array a mit einer L?nge von N und einem Elementwertbereich von [1, N], z?hlen Sie die Anzahl der Vorkommen jedes Elements und die erforderliche Zeitkomplexit?t ist O (N), die Raumkomplexit?t ist O (1)
[Code]
6 6 2 6 2 5 6 2 5 0
(Empfohlenes grafisches Tutorial:
Java-Interviewfragen und -antworten)3. Finden Sie die Elemente eines geordneten zweidimensionalen Arrays
[Titel 】
In einem zweidimensionalen Array (jedes eindimensionale Array hat die gleiche L?nge) wird jede Zeile in aufsteigender Reihenfolge von links nach rechts und jede Spalte in aufsteigender Reihenfolge von oben nach unten sortiert. Bitte vervollst?ndigen Sie eine Funktion, geben Sie ein solches zweidimensionales Array und eine Ganzzahl ein und bestimmen Sie, ob das Array die Ganzzahl enth?lt.
[Code]
/** * 這類要求空間O(1)時(shí)間復(fù)雜度為O(n)的問題 * 需要在一次遍歷并且不聲明新數(shù)組的情況下求解,這種題目通常要求元素大小跟下標(biāo)大小一致。 * 所以通??紤]是利用數(shù)組存儲(chǔ)的元素和數(shù)組下標(biāo)來求解 * 在本題中,數(shù)組的元素變成了下標(biāo),而數(shù)組內(nèi)元素則表示之前元素出現(xiàn)的次數(shù),0則代表不出現(xiàn)。 * 為了區(qū)分元素和次數(shù),可以把次數(shù)設(shè)定為負(fù)值 * */ public void Solution(int[] a) { int i,n,temp; n = a.length; i = 0; /** * 只有在temp小于0的時(shí)候才會(huì)推進(jìn)循環(huán) * */ while(i < n) { temp = a[i]-1; // 如果數(shù)組元素小于0,則代表該數(shù)已經(jīng)被替換到其他地方或者已經(jīng)被計(jì)數(shù)過從而被覆蓋 if (temp < 0) { i ++; continue; } // 把未記錄的數(shù)保存在已經(jīng)記錄的位置上,并用負(fù)值保存數(shù)量 if (a[temp]>0) { a[i] = a[temp]; a[temp] = -1; } else { a[i] = 0; //該數(shù)據(jù)已經(jīng)使用過,且表示元素i+1出現(xiàn)0次 a[temp]--; } } }
[Denken]
Ausgehend von oben links gibt es zu viele Situationen, die berücksichtigt werden müssen, da sowohl nach rechts als auch nach unten zunimmt, aber von oben rechts aus nach links abnehmend und nach unten zunehmend, so dass die Situation auf eins beschr?nkt ist. Spezielle Arrays, nutzen Sie die Besonderheiten von Arrays voll aus und berücksichtigen Sie Methoden aus verschiedenen Richtungen.
4. Stufen hochspringen
[Thema]
Ein Frosch kann 1 Stufe oder 2 Stufen gleichzeitig hochspringen. Finden Sie heraus, auf wie viele Arten der Frosch eine n-stufige Stufe hochspringen kann (unterschiedliche Ergebnisse werden in unterschiedlicher Reihenfolge berechnet). 5. Abnormale Sprungtreppen Finden Sie die Gesamtzahl der M?glichkeiten, auf denen der Frosch eine Treppe mit n Ebenen hinaufspringen kann.
【Code】
package swear2offer.array; public class ArrayFind { /** * 在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長度相同), * 每一行都按照從左到右遞增的順序排序, * 每一列都按照從上到下遞增的順序排序。 * 請完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù), * 判斷數(shù)組中是否含有該整數(shù)。 * * 思路: * 從左上出發(fā),需要考慮的情況太多,因?yàn)橄蛴液拖蛳露际沁f增 * 但是從右上出發(fā),向左遞減,向下遞增,這樣就把情況限定在一種。 * */ public boolean Find(int target, int [][] array) { int l,h,x,y; h = array.length; l = array[0].length; // 游標(biāo)的橫縱坐標(biāo) x = l-1; y = 0; while (x>=0 && y<h) { if(array[y][x] == target) { return true; } if (array[y][x]<target) { y++; } else { x--; } } return false; } public static void main(String[] args) { int[][] a = {{1,3,5,6},{2,4,7,8},{5,8,9,12}}; System.out.println(new ArrayFind().Find(11,a)); } }
Verwandte Empfehlungen:
Erste Schritte mit JavaDas obige ist der detaillierte Inhalt vonZusammenfassung h?ufiger Array-Fragen in Java-Interviews (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

Verwenden Sie Klassen im Java.Time -Paket, um das alte Datum und die Kalenderklassen zu ersetzen. 2. Erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit durch LocalDate, LocalDatetime und Local Time; 3. Erstellen Sie ein bestimmtes Datum und eine bestimmte Uhrzeit mit der von () Methode; 4.. Verwenden Sie die Plus/Minus -Methode, um die Zeit nicht zu erh?hen und zu verkürzen. 5. Verwenden Sie ZonedDatetime und zoneId, um die Zeitzone zu verarbeiten. 6. Format und analysieren Sie Datumszeichenfolgen über DateTimeFormatter; 7. Verwenden Sie sofortige, um bei Bedarf mit den alten Datumstypen kompatibel zu sein. Die Verarbeitung der Datum in der modernen Java sollte der Verwendung von Java.Timeapi vorrangig machen, was klare, unver?nderliche und linear ist

Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

Durch die Auswahl des richtigen HTMlinput -Typs kann die Datengenauigkeit verbessert, die Benutzererfahrung verbessert und die Benutzerfreundlichkeit verbessert werden. 1. W?hlen Sie die entsprechenden Eingabetypen gem?? dem Datentyp aus, z. B. Text, E -Mail, Tel, Nummer und Datum, die automatisch überprüft und an die Tastatur anpassen k?nnen. 2. Verwenden Sie HTML5, um neue Typen wie URL, Farbe, Reichweite und Suche hinzuzufügen, die eine intuitivere Interaktionsmethode bieten k?nnen. 3.. Verwenden Sie Platzhalter und erforderliche Attribute, um die Effizienz und Genauigkeit der Formulierung zu verbessern. Es sollte jedoch beachtet werden, dass der Platzhalter das Etikett nicht ersetzen kann.

HTTP-Protokoll Middleware in Go kann Anforderungsmethoden, Pfade, Client-IP und zeitaufw?ndiges Aufzeichnen aufzeichnen. 1. Verwenden Sie http.Handlerfunc, um den Prozessor zu wickeln, 2. Nehmen Sie die Startzeit und die Endzeit vor und nach dem Aufrufen als n?chstes auf. Der vollst?ndige Beispielcode wurde überprüft, um auszuführen und eignet sich zum Starten eines kleinen und mittelgro?en Projekts. Zu den Erweiterungsvorschl?gen geh?ren das Erfassen von Statuscodes, die Unterstützung von JSON -Protokollen und die Nachverfolgung von ID -IDs.

GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

Auf Defer wird verwendet, um bestimmte Vorg?nge auszuführen, bevor die Funktion zurückgibt, z. B. die Reinigungsressourcen. Die Parameter werden sofort bewertet, wenn sie aufgeschoben werden, und die Funktionen werden in der Reihenfolge von Last-In-First-Out (LIFO) ausgeführt. 1. Mehrere Defers werden in umgekehrter Reihenfolge der Erkl?rungen ausgeführt. 2. h?ufig für die sichere Reinigung wie das Schlie?en von Dateien verwendet; 3. Der benannte Rückgabewert kann ge?ndert werden; V. 5. Vermeiden Sie den Missbrauch von Verschiebungen in Schleifen, um Ressourcenleckage zu verhindern. Die korrekte Verwendung kann die Sicherheit und die Lesbarkeit der Code verbessern.
