Einführung
In diesem Lab werden wir die JavaScript-Programmierung erkunden, indem wir eine Reihe von Übungen absolvieren, die dazu dienen, grundlegende Fertigkeiten zu entwickeln. Von der Basis-Syntax und den Datentypen bis zu fortschrittlicheren Konzepten wie asynchroner Programmierung und funktionale Programmierung wird Ihnen dieses Lab praktische Erfahrungen vermitteln, die Ihnen helfen, ein kompetenter JavaScript-Entwickler zu werden. Egal, ob Sie neu im Programmieren sind oder Ihre Fähigkeiten erweitern möchten, dieses Lab wird Ihnen die erforderlichen Werkzeuge geben, um erfolgreich zu sein.
Maximum Subarray Algorithm
Um das Programmieren zu üben, öffnen Sie das Terminal/SSH und geben Sie node ein. Dieser Algorithmus findet ein zusammenhängendes Teilarray mit der größten Summe innerhalb eines Arrays von Zahlen. Um diesen Algorithmus zu implementieren, folgen Sie diesen Schritten:
- Verwenden Sie einen greedy Ansatz, um die aktuelle
Summeund das aktuelle Maximum,maxSum, zu verfolgen. Setzen SiemaxSumauf-Infinity, um sicherzustellen, dass der höchste negative Wert zurückgegeben wird, wenn alle Werte negativ sind. - Definieren Sie Variablen, um den maximalen Startindex,
sMax, den maximalen Endindex,eMax, und den aktuellen Startindex,s, zu verfolgen. - Verwenden Sie
Array.prototype.forEach(), um über die Werte zu iterieren und den aktuellen Wert zurSummehinzuzufügen. - Wenn die aktuelle
Summegrößer alsmaxSumist, aktualisieren Sie die Indexwerte und diemaxSum. - Wenn die
Summeunter0liegt, setzen Sie sie auf0und aktualisieren Sie den Wert vonsauf den nächsten Index. - Verwenden Sie
Array.prototype.slice(), um das Teilarray zurückzugeben, das durch die Indexvariablen angegeben wird.
Hier ist der JavaScript-Code für den Algorithmus:
const maxSubarray = (...arr) => {
let maxSum = -Infinity,
sum = 0;
let sMax = 0,
eMax = arr.length - 1,
s = 0;
arr.forEach((n, i) => {
sum += n;
if (maxSum < sum) {
maxSum = sum;
sMax = s;
eMax = i;
}
if (sum < 0) {
sum = 0;
s = i + 1;
}
});
return arr.slice(sMax, eMax + 1);
};
Hier ist ein Beispiel, wie die Funktion verwendet werden kann:
maxSubarray(-2, 1, -3, 4, -1, 2, 1, -5, 4); // [4, -1, 2, 1]
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Maximum Subarray Lab abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.