Q4: Find Minimum and Maximum Values in an Array
Find both min and max values in a single pass across the array without relying on spread syntax with Math.min/Math.max, which can overflow the call stack on large arrays.
Single-Pass Min/Max Finder
function findMinMax(arr) {
if (!arr.length) return { min: undefined, max: undefined };
let min = arr[0];
let max = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < min) min = arr[i];
if (arr[i] > max) max = arr[i];
}
return { min, max };
}
console.log(findMinMax([3, 1, 9, 4, 2])); // { min: 1, max: 9 }💡 Iterating once updates min and max tracking variables in O(n) time and O(1) auxiliary space.
Key Takeaways
- Performs single-pass O(n) iteration to update bounds.
- Avoids Math.max(...arr) which can throw a stack overflow error on very large arrays.
Knowledge Check
Why can Math.max(...largeArray) fail on extremely large arrays (e.g. 100,000+ elements)?