Zusammenfassung h?ufiger Array-Fragen in Java-Interviews (3)
Nov 11, 2020 pm 03:18 PMBewertung: *****
1. Drucken Sie die Matrix im Uhrzeigersinn aus Wenn Sie beispielsweise die folgenden 4 eingeben: 12,16,15,14,13,9,5,6,7,11,10.
Sie ben?tigen Achten Sie darauf, ob die Grenze überschritten wird und der Cursor (x, y) durch x++ verl?uft. Oder nach y++, wo sich die Positionierung befindet, ist eine manuelle Drehung erforderlich.
2. Eine Zahl, die mehr als die H?lfte der Zeit im Array vorkommt
[Titel]
Es gibt eine Zahl im Array, die mehr als die H?lfte der L?nge des Arrays vorkommt. Geben Sie beispielsweise ein Array {1,2,3,2,2,2,5,4,2} mit einer L?nge von 9 ein. Da die Zahl 2 fünfmal im Array vorkommt, was mehr als der halben L?nge des Arrays entspricht, wird 2 ausgegeben. Wenn nicht vorhanden, wird 0 ausgegeben.
【Code】
package swear2offer.array; import java.util.Arrays; public class Half { /** * 數(shù)組中有一個數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長度的一半,請找出這個數(shù)字。 * 例如輸入一個長度為 9 的數(shù)組 {1,2,3,2,2,2,5,4,2}。 * 由于數(shù)字 2 在數(shù)組中出現(xiàn)了 5 次,超過數(shù)組長度的一半,因此輸出 2。如果不存在則輸出 0。 * */ public int MoreThanHalfNum_Solution(int [] array) { int n,count,i,k; n = array.length; if (n == 0) return 0; if (n == 1) return array[0]; // 標記數(shù)組 int[] flag = new int[n]; // 給數(shù)組排序 Arrays.sort(array); count = 1; flag[0] = 1; for (i=1; i<n; i++) { // 因為是排序好的,如果存在相等的 if (array[i-1] == array[i]) { count ++; } else { count = 1; } flag[i] = count; } count = 0; k = 0; for (i=1; i<n; i++) { if (count < flag[i]) { count = flag[i]; k = i; } } return count > n/2 ? array[k] : 0; } }
(Empfohlene verwandte Interviewfragen:
Java-Interviewfragen und -antworten)
【Code 2】
Geniale Methode für unn?tiges Sortieren:
Verwenden Sie preValue, um den Wert des letzten Besuchs aufzuzeichnen, z?hlen Gibt an, wie oft der aktuelle Wert mit dem aktuellen Wert übereinstimmt. Wenn er sich von count– unterscheidet, muss der neue Wert preValue ersetzt werden, wenn er auf 0 sinkt ein Wert, der die halbe L?nge des Arrays überschreitet, dann der letzte preValue Es muss dieser Wert sein.
public int MoreThanHalfNum_Solution(int [] array) {
if(array == null || array.length == 0)return 0;
int preValue = array[0];//用來記錄上一次的記錄
int count = 1;//preValue出現(xiàn)的次數(shù)(相減之后)
for(int i = 1; i < array.length; i++){
if(array[i] == preValue)
count++;
else{
count--;
if(count == 0){
preValue = array[i];
count = 1;
}
}
}
int num = 0;//需要判斷是否真的是大于1半數(shù)
for(int i=0; i < array.length; i++)
if(array[i] == preValue)
num++;
return (num > array.length/2)?preValue:0;
}
[Denken]
Wenn ich bei 1 statt bei 0 beginne, ist normalerweise besondere überlegung erforderlich, wenn nur ein Element vorhanden ist.
3 Die maximale Summe aufeinanderfolgender Unterarrays Die Summe seiner maximal aufeinanderfolgenden Teilsequenzen, zum Beispiel: {6,-3,-2,7,-15,1,2,2}, die maximale Summe aufeinanderfolgender Teilvektoren betr?gt 8 (beginnend vom 0. bis zum 3.)
[Code]
/** * 給一個數(shù)組,返回它的最大連續(xù)子序列的和 * * 例如:{6,-3,-2,7,-15,1,2,2}, 連續(xù)子向量的最大和為 8 (從第 0 個開始,到第 3 個為止) * * 非常典型的dp * * 動規(guī)通常分為順推和逆推兩個不同的方向 * 要素:邊界,狀態(tài)轉移公式,數(shù)組代表含義 * array[] * dp[x],從各個正數(shù)開始連續(xù)到達x時,最大和,即連續(xù)子序列的最大和 * 需要注意:1.從第一個正數(shù)開始,2.是連續(xù)序列 * 通常情況下,連續(xù)序列的復雜度為O(n),非連續(xù)序列為O(n*n) * */ public int FindGreatestSumOfSubArray(int[] array) { int n,i,len,res; int[] dp; n = array.length; if (n == 0 || array == null) return 0; if (n == 1) return array[0]; dp = new int[n]; dp[0] = array[0]; len = 0; res = array[0]; for (i=1; i<n; i++) { len = dp[i-1] + array[i]; if (dp[i-1] < 0) { dp[i] = array[i]; } else { dp[i] = len; } if (res < dp[i]) res = dp[i]; } return res; }
[Idee]
Durchlauf von vorne nach hinten Die Summe der gr??ten kontinuierlichen Teilfolge wird durch überlagerung des aktuellen Elements und der Summe der vorherigen gr??ten kontinuierlichen Teilfolge gebildet. Wenn die Summe der vorherigen gr??ten kontinuierlichen Teilfolge gr??er als Null ist, k?nnen wir mit der Akkumulation fortfahren. Wenn sie kleiner als Null ist, müssen wir die vorherige Teilfolge verwerfen und erneut mit der Akkumulation beginnen. Die Zeitkomplexit?t betr?gt O (n)
4. Die Anzahl der Vorkommen von 1 in ganzen Zahlen
[Titel]
Finden Sie die Anzahl der Vorkommen von 1 in ganzen Zahlen von 1 bis 13 und berechnen Sie die Anzahl der Vorkommen von 1 in ganze Zahlen von 100 bis 1300 ? Aus diesem Grund z?hlte er speziell die Zahlen, die 1 enthielten, von 1 bis 13. Es waren 1, 10, 11, 12 und 13, also kamen sie insgesamt sechsmal vor, aber er war ratlos für die n?chste Frage. ACMer hofft, dass Sie ihm helfen und das Problem allgemeiner gestalten k?nnen, sodass er schnell die H?ufigkeit des Vorkommens von 1 in jedem nichtnegativen ganzzahligen Intervall ermitteln kann (die H?ufigkeit des Auftretens von 1 von 1 bis n).
[Code]
public int NumberOf1Between1AndN_Solution(int n) { if (n == 1) return 1; int nCount,i,j; nCount = 0; for (i=1; i<=n; i++) { j = i; while (j > 0) { if (j%10 == 1) nCount++; j = j/10; } } return nCount; }
[Denken]
Verwenden Sie zum Schreiben keine Rekursion, die einfachste Schleife reicht aus
5. H?ssliche Zahlen
[Titel]
Nennen Sie die Zahlen, die nur die Primfaktoren 2, 3 enthalten und 5 H?ssliche Zahl. Zum Beispiel sind 6 und 8 beide h?ssliche Zahlen, 14 jedoch nicht, weil sie den Primfaktor 7 enth?lt. Es ist üblich, dass wir 1 als die erste h?ssliche Zahl betrachten. Finden Sie die N-te h?ssliche Zahl in aufsteigender Reihenfolge.
【Code】
/** * 把只包含質因子 2、3 和 5 的數(shù)稱作丑數(shù)(Ugly Number)。 * 例如 6、8 都是丑數(shù),但 14 不是,因為它包含質因子 7。 * 習慣上我們把 1 當做是第一個丑數(shù)。求按從小到大的順序的第 N 個丑數(shù)。 * * 從已有的丑數(shù)中選取一個,分別*2,*3,*5,再取最小的 * 最小的索引++,并賦值 * */ public int GetUglyNumber_Solution(int index) { if (index == 0) return 0; int p2,p3,p5,i,temp; p2 = p3 = p5 = 0; int[] res = new int[index]; res[0] = 1; for (i=1; i<index; i++) { res[i] = Math.min(res[p2]*2,Math.min(res[p3]*3,res[p5]*5)); if (res[i] == res[p2]*2) p2++; if (res[i] == res[p3]*3) p3++; if (res[i] == res[p5]*5) p5++; } return res[index-1]; }
【Denken】
Beim Sortieren einer Sequenz mit bestimmten Eigenschaften k?nnen Sie diese Methode in Betracht ziehen.
Verwandte Empfehlungen:
Erste Schritte mit JavaDas obige ist der detaillierte Inhalt vonZusammenfassung h?ufiger Array-Fragen in Java-Interviews (3). 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)

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

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.

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.

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

Die Verwendung der OpenCSV -Bibliothek ist die beste Wahl zum Lesen von CSV -Dateien. Es kann komplexe Situationen bew?ltigen und mehrere Merkmale unterstützt. 2. Für einfache CSV-Dateien k?nnen Sie Javas integriertes BufferedReader in Kombination mit Split-Methode verwenden. 3. Wenn Sie eine flexiblere Formatsteuerung ben?tigen oder Apache -Komponenten verwendet haben, k?nnen Sie Apache CommonsCSV ausw?hlen. OpenCSV wird für die Einfachheit, Robustheit und die F?higkeit, CSV -Probleme in realen Szenarien zu l?sen, empfohlen.

Zun?chst checkifthefnkeysettingIssinterferingbyingbothThevolumeKeyaloneAndfn VolumeKey, thentogglefnlockwithfn EscifAvailable

Der ExecutorService eignet sich zur asynchronen Ausführung unabh?ngiger Aufgaben wie E/A -Operationen oder Zeitaufgaben, verwendete den Thread -Pool zur Verwaltung von Parallelit?t, sendete Runnable- oder Callable -Aufgaben über Senden und erzielte Ergebnisse mit Zukunft. Achten Sie auf das Risiko unbegrenzter Warteschlangen und schlie?en Sie den Fadenpool ausdrücklich; 2. Das Fork/Join-Framework ist für CPU-intensive Aufgaben von Split-Gouvernance-Aufgaben ausgelegt, basierend auf der Verteilung und kontroversen Methoden und Work-Stellungsalgorithmen und realisiert rekursive Aufteilung von Aufgaben durch Recursivetask oder Recursiveaction, die durch Forkjoinpool geplant und ausgeführt wird. Es eignet sich für gro?e Array -Summierungs- und Sortierszenarien. Der Split -Schwellenwert sollte vernünftigerweise eingestellt werden, um Overhead zu vermeiden. 3.. Auswahlbasis: unabh?ngig

Berechnet hat einen Cache, und mehrere Zugriffe werden nicht neu berechnet, wenn die Abh?ngigkeit unver?ndert bleibt, w?hrend Methoden jedes Mal ausgeführt werden, wenn sie aufgerufen werden. 2. Computed eignet sich für Berechnungen basierend auf reaktionsschnellen Daten. Methoden eignen sich für Szenarien, in denen Parameter erforderlich sind, oder h?ufige Aufrufe, das Ergebnis h?ngt jedoch nicht von reaktionsschnellen Daten ab. 3. Computed unterstützt Getter und Setzer, die die Zwei-Wege-Synchronisation von Daten realisieren k?nnen. Methoden werden jedoch nicht unterstützt. 4. Zusammenfassung: Verwenden Sie zuerst berechnet, um die Leistung zu verbessern und Methoden zu verwenden, wenn sie Parameter übergeben, Vorg?nge ausführen oder Cache vermeiden. Nach dem Prinzip "Wenn Sie berechnet k?nnen, verwenden Sie keine Methoden".
