Array Deletion at Middle Index in DSA Javascript - Time & Space Complexity
When we delete an element from the middle of an array, the computer must adjust the rest of the elements. This adjustment takes time.
We want to know how the time needed grows as the array gets bigger.
Analyze the time complexity of the following code snippet.
const arr = [1, 2, 3, 4, 5];
const middleIndex = Math.floor(arr.length / 2);
arr.splice(middleIndex, 1);
console.log(arr);
This code removes the middle element from the array and shifts the remaining elements left.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Shifting elements after the deleted index to the left by one position.
- How many times: Number of elements after the middle index, which grows as the array size grows.
When the array size increases, the number of elements to shift also increases roughly in proportion.
| Input Size (n) | Approx. Operations (shifts) |
|---|---|
| 10 | About 5 shifts |
| 100 | About 50 shifts |
| 1000 | About 500 shifts |
Pattern observation: The number of shifts grows roughly half as fast as the array size, so it grows linearly.
Time Complexity: O(n)
This means the time to delete from the middle grows in direct proportion to the array size.
[X] Wrong: "Deleting an element from an array is always fast and takes the same time no matter the position."
[OK] Correct: When deleting from the middle, elements after it must move, so it takes more time as the array grows.
Understanding how array operations scale helps you choose the right data structure and explain your choices clearly in interviews.
What if we deleted the last element instead of the middle? How would the time complexity change?
Practice
array.splice(mid, 1) where mid is the middle index?Solution
Step 1: Understand splice method behavior
Thesplicemethod removes elements starting at the given index. Here, it removes 1 element at the middle index.Step 2: Effect on array size
Removing one element reduces the array length by one, and elements after the removed one shift left.Final Answer:
The middle element is removed and the array size decreases by one. -> Option DQuick Check:
splice(mid, 1) removes middle element [OK]
- Thinking splice does not change array size
- Confusing splice with slice
- Removing wrong index
arr in JavaScript?Solution
Step 1: Identify correct method to remove element by index
JavaScript arrays usespliceto remove elements at a specific index.Step 2: Calculate middle index correctly
Math.floor(arr.length / 2)gives the middle index for odd or even length arrays.Final Answer:
arr.splice(Math.floor(arr.length / 2), 1); -> Option BQuick Check:
splice + floor middle index = correct syntax [OK]
- Using non-existent methods like delete or remove
- Using pop with index argument
- Not flooring the middle index
let arr = [10, 20, 30, 40, 50]; let mid = Math.floor(arr.length / 2); arr.splice(mid, 1); console.log(arr);
Solution
Step 1: Calculate middle index
Array length is 5, so middle index = floor(5/2) = 2.Step 2: Remove element at index 2
Element at index 2 is 30, so splice removes 30.Step 3: Resulting array
Array becomes [10, 20, 40, 50] after removal.Final Answer:
[10, 20, 40, 50] -> Option AQuick Check:
Removed element 30 at index 2 [OK]
- Removing wrong index element
- Not flooring middle index
- Confusing splice with slice
let arr = [1, 2, 3, 4, 5]; let mid = arr.length / 2; arr.splice(mid, 1); console.log(arr);
Solution
Step 1: Check middle index calculation
mid is calculated as arr.length / 2 = 2.5, which is a float, not an integer index.Step 2: Effect of float index in splice
splice expects an integer index; JavaScript coerces 2.5 to 2, but explicitly using Math.floor(arr.length / 2) ensures clarity and avoids reliance on type coercion.Step 3: Correct approach
Use Math.floor(arr.length / 2) to get integer index 2.Final Answer:
mid should be floored to an integer before using in splice. -> Option CQuick Check:
Index must be integer for splice [OK]
- Using float index in splice
- Assuming splice removes by value
- Passing wrong number of arguments to splice
arr with an even number of elements, how can you remove the two middle elements correctly in JavaScript?Solution
Step 1: Identify middle indices for even length
For even length n, middle two elements are at indices n/2 - 1 and n/2.Step 2: Remove two elements starting at n/2 - 1
Usingarr.splice(arr.length / 2 - 1, 2)removes both middle elements at once.Step 3: Why other options fail
Usearr.splice(arr.length / 2, 1);twice removes one element twice but shifts indices, causing wrong removal; Usearr.pop(); arr.shift();removes first and last elements; Usearr.splice(arr.length / 2, 2);removes elements after middle.Final Answer:
Use arr.splice(arr.length / 2 - 1, 2); -> Option AQuick Check:
Remove two middle elements starting at n/2 - 1 [OK]
- Removing elements twice causing index shift
- Removing first and last instead of middle
- Starting splice at wrong index
Ready to prove it?
Pass the test and this pattern moves unknown
