خوارزميةمجاني

عكس مصفوفة في مكانها

بدّل الطرفين وتقدّم نحو المنتصف، دون الحاجة إلى مصفوفة ثانية.

الزمن
O(n)
الذاكرة
O(1)

تتبّعها خطوة بخطوة

الخطوة 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 من العنصر الأول، ويبدأ hi من الأخير.

كيف تعمل

ضع مؤشّراً عند كل طرف. بدّل العنصرين، ثم قدّم المؤشّرين خطوة نحو المنتصف. عندما يلتقيان يكون كل عنصر قد انتقل إلى موضعه المقابل. نلمس كل عنصر مرة واحدة، فالزمن O(n)، ولا نستخدم سوى متغيّرَي فهرس، فالذاكرة الإضافية O(1).

تدرّب على اكتشاف هذا النمط →