Heim >Java >javaLernprogramm >Leetcode – Top-Interview – Element entfernen
Es ist ein einfaches Problem, das darin besteht:
Entfernen Sie bei einem gegebenen Integer-Array nums und einem Integer-Wert alle Vorkommen von val in nums an Ort und Stelle. Die Reihenfolge der Elemente kann geändert werden. Geben Sie dann die Anzahl der Elemente in nums zurück, die nicht gleich val sind.
Berücksichtigen Sie die Anzahl der Elemente in Zahlen, die nicht gleich dem Wert k sind. Um akzeptiert zu werden, müssen Sie Folgendes tun:Ändern Sie das Array nums so, dass die ersten k Elemente von nums die Elemente enthalten, die nicht gleich val sind. Die übrigen Elemente von Nums sind ebenso wichtig wie die Größe von Nums.
Rückkehr k.Benutzerdefinierter Richter:
Der Richter testet Ihre Lösung mit dem folgenden Code:
int[] nums = [...]; // Eingabearray
int val = ...; // Zu entfernender Wert
int[] erwartetNums = [...]; // Die erwartete Antwort mit der richtigen Länge.
// Es wird ohne Werte sortiert, die val entsprechen.
int k = removeElement(nums, val); // Ruft Ihre Implementierung auf
behaupten k == erwartetNums.length;
sort(nums, 0, k); // Die ersten k Elemente von nums sortieren
for (int i = 0; ibehaupten nums[i] == erwartetNums[i];
}Wenn alle Behauptungen zutreffen, wird Ihre Lösung akzeptiert.
Beispiel 1:
Eingabe: nums = [3,2,2,3], val = 3
Ausgabe: 2, nums = [2,2,,]
Erläuterung: Ihre Funktion sollte k = 2 zurückgeben, wobei die ersten beiden Elemente von nums 2 sind.
Es spielt keine Rolle, was Sie über das zurückgegebene k hinausgehen lassen (daher handelt es sich um Unterstriche).Beispiel 2:
Eingabe: nums = [0,1,2,2,3,0,4,2], val = 2
Ausgabe: 5, nums = [0,1,4,0,3,,,_]
Erläuterung: Ihre Funktion sollte k = 5 zurückgeben, wobei die ersten fünf Elemente von Zahlen 0, 0, 1, 3 und 4 enthalten.
Beachten Sie, dass die fünf Elemente in beliebiger Reihenfolge zurückgegeben werden können.
Es spielt keine Rolle, was Sie über das zurückgegebene k hinausgehen lassen (daher handelt es sich um Unterstriche).Einschränkungen:
0 <= nums.length <= 100
0 <= nums[i] <= 50
0 <= val <= 100
Bei diesem Problem müssen Sie das Array iterieren, den Wert identifizieren und ihn aus den Zahlen entfernen.
Auf den ersten Blick würde man denken, dass ein anderes Array den Zweck erfüllen könnte, aber später müssen Sie eine weitere Iteration durchführen, nur um die Werte festzulegen (eine direkte Einstellung würde nicht funktionieren, da Java die Referenzen von Methodenvariablen, d. h. innerhalb der Methode, nicht aktualisiert würde aussehen, als ob es sich geändert hätte, aber außerhalb der Methode behält es die alte Referenz bei), und das wäre in Bezug auf die Leistung schlecht.
Da das Endergebnis nicht von einer anderen Operation als den unterschiedlichen Werten abhängt, könnten Sie einfach einen Index beibehalten und die Werte aktualisieren, wenn Sie sie anders als var finden, und dasselbe auch als Lösung verwenden:
class Solution { public int removeElement(int[] nums, int val) { int diffIndex = 0; for(int i=0;i<nums.length;i++) { if(nums[i] != val) { nums[diffIndex] = nums[i]; diffIndex++; } } return diffIndex; } }
Laufzeit: 0 ms, schneller als 100,00 % der Java-Online-Übermittlungen für „Element entfernen“.
Speichernutzung: 42 MB, weniger als 31,68 % der Java-Online-Einreichungen für Remove Element.
—
Das ist es! Wenn es sonst noch etwas zu besprechen gibt, können Sie gerne einen Kommentar hinterlassen. Wenn ich etwas verpasst habe, lassen Sie es mich wissen, damit ich es entsprechend aktualisieren kann.
Bis zum nächsten Beitrag! :)
Das obige ist der detaillierte Inhalt vonLeetcode – Top-Interview – Element entfernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!