


Einführung
In technischen Interviews treten häufig Probleme bei der Array-Manipulation auf. In diesem Beitrag befassen wir uns mit einem häufigen Problem: Werte ungleich Null nach links verschieben und dabei die Reihenfolge der Elemente ungleich Null beibehalten und alle Nullen nach rechts verschieben.
Wenn Sie mit den grundlegenden Array-Konzepten nicht vertraut sind, empfehle ich Ihnen, sich „Understanding Array Basics in Java: A Simple Guide“ anzuschauen, um sich auf den neuesten Stand zu bringen!
Problemstellung
Bei einem Array von Ganzzahlen besteht Ihre Aufgabe darin, alle Nicht-Null-Elemente auf die linke Seite zu verschieben und gleichzeitig alle Null-Elemente nach rechts zu verschieben. Die relative Reihenfolge der Nicht-Null-Elemente muss beibehalten werden.
Beispiel:
Input: [1, 2, 0, 3, 0, 0, 4, 3, 2, 9] Output: [1, 2, 3, 4, 3, 2, 9, 0, 0, 0]
Ansatz
Wir können dieses Problem in O(n) Zeit mit einem einzigen Durchgang durch das Array lösen, und die Lösung wird eine Raumkomplexität von O(1) haben.
- Verwenden Sie einen Zeiger, um den Index für das nächste Element ungleich Null zu verfolgen.
- Durchlaufen Sie das Array und platzieren Sie Elemente ungleich Null am Index des Zeigers.
- Erhöhen Sie den Zeiger jedes Mal, wenn ein Element ungleich Null platziert wird.
Der Kodex
package arrays; // Time Complexity - O(n) // Space Complexity - O(1) public class ShiftNonZeroValuesToLeft { private void shiftValues(int[] inputArray) { /* Variable to keep track of index position to be filled with Non-Zero Value */ int pointer = 0; // If value is Non-Zero then place it at the pointer index for (int i = 0; i <h2> Erläuterung </h2>
Die Methode shiftValues iteriert durch das Eingabearray.
Wenn ein Wert ungleich Null gefunden wird, wird er am aktuellen Zeigerindex platziert und das Element am aktuellen Index wird durch 0 ersetzt.
Der Zeiger wird dann inkrementiert, um die nächste Position für ein Element ungleich Null zu verfolgen.
Wenn an der richtigen Position (d. h. am Zeigerindex) bereits ein Wert ungleich Null vorhanden ist, erhöht die Methode einfach den Zeiger, ohne einen Austausch vorzunehmen.
Dies wird fortgesetzt, bis das gesamte Array verarbeitet ist.
Zeit- und Raumkomplexität
Zeitkomplexität: O(n), wobei n die Länge des Arrays ist.
Raumkomplexität: O(1), da wir das Array an Ort und Stelle ändern.
Randfälle
Alle Nullen: Wenn das Array nur Nullen enthält, bleibt es unverändert.
Keine Nullen: Wenn keine Nullen vorhanden sind, bleibt die ursprüngliche Reihenfolge der Elemente erhalten.
Leeres Array: Die Funktion sollte leere Arrays ohne Probleme verarbeiten.
Abschluss
Dieses Problem zeigt, wie wichtig es ist, Array-Manipulationstechniken und ihre Effizienz bei der Codierung von Interviews zu verstehen. Das Beherrschen solcher Probleme kann Ihre Fähigkeiten zur Problemlösung erheblich verbessern!
Das obige ist der detaillierte Inhalt vonWerte ungleich Null nach links verschieben: Ein häufiges Array-Interview-Problem-1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Dieser Artikel analysiert 2025 die vier besten JavaScript -Frameworks (React, Angular, Vue, Svelte) und verglichen ihre Leistung, Skalierbarkeit und Zukunftsaussichten. Während alle aufgrund starker Gemeinschaften und Ökosysteme dominant bleiben, sind ihr relatives Popul

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Node.js 20 verbessert die Leistung durch V8 -Motorverbesserungen erheblich, insbesondere durch schnellere Müllsammlung und E/A. Zu den neuen Funktionen gehören eine bessere Support von WebAssembly und raffinierte Debugging -Tools, die Produktivität der Entwickler und die Anwendungsgeschwindigkeit.

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Iceberg, ein offenes Tabellenformat für große analytische Datensätze, verbessert die Leistung und Skalierbarkeit von Data Lake. Es befasst sich mit Einschränkungen von Parquet/ORC durch internes Metadatenmanagement und ermöglicht eine effiziente Schemaentwicklung, Zeitreisen, gleichzeitiger W

Dieser Artikel befasst sich mit der Verwundbarkeit von CVE-2022-1471 in Snakeyaml, einem kritischen Fehler, der die Ausführung von Remote-Code ermöglicht. Es wird beschrieben

In diesem Artikel wird die Integration der funktionalen Programmierung in Java unter Verwendung von Lambda -Ausdrücken, Streams -API, Methodenreferenzen und optional untersucht. Es zeigt Vorteile wie eine verbesserte Lesbarkeit der Code und die Wartbarkeit durch SUKTIVE UND VERUSNAHMETALITÄT

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.


Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Dreamweaver CS6
Visuelle Webentwicklungstools

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
