Algorithmusgratis

Array an Ort und Stelle umkehren

Tausche die beiden Enden und arbeite dich zur Mitte vor. Kein zweites Array nötig.

Zeit
O(n)
Speicher
O(1)

// Schritt für Schritt

Schritt 1 / 6
1function reverseInPlace(nums) {2  let lo = 0, hi = nums.length - 1;3  while (lo < hi) {4    [nums[lo], nums[hi]] = [nums[hi], nums[lo]];5    lo++;6    hi--;7  }8  return nums;9}
  1. 3lo
  2. 8
  3. 1
  4. 9
  5. 4hi

lo startet beim ersten Element, hi beim letzten.

So funktioniert es

Setze je einen Zeiger an beide Enden. Tausche die beiden Elemente und rücke dann beide Zeiger einen Schritt zur Mitte. Wenn sie sich treffen, steht jedes Element an seiner Spiegelposition. Jedes Element wird einmal angefasst, also O(n) Zeit, und es braucht nur zwei Indexvariablen, also O(1) zusätzlichen Speicher.

Dieses Muster erkennen üben →