Start learning free

LESSON 152 OF 410 · LOOPING OVER ARRAY INDICES

Reverse Array in JavaScript (Time Complexity: O(n))

Practice Read the full explanation

Given an array of integers nums, return an array containing the integers in reverse order, without using built-in functions.

Example:

Input: nums = [2, 9, 1, 5, 8]
Output: [8, 5, 1, 9, 2]

Note:

Do not use builtin functions such as reverse(), it would defy the purpose of the challenge. Write the whole code yourself.

STEP 1 OF 4
    Ctrl + Enter to check

    JAVASCRIPT · LOOPING OVER ARRAY INDICES

    Reverse Array in JavaScript, explained

    Understanding the Problem

    The core challenge of this problem is to reverse the elements of an array without using any built-in functions like reverse(). This is a common problem that helps in understanding array manipulation and indexing.

    Reversing an array is a fundamental operation with applications in various algorithms and data processing tasks. It is essential to understand how to manipulate arrays manually to build a strong foundation in programming.

    Potential pitfalls include misunderstanding the indexing or trying to use built-in functions, which are not allowed in this problem.

    Approach

    To solve this problem, we can use a two-pointer technique. This approach involves swapping elements from the beginning and end of the array until we reach the middle. This method is efficient and has a time complexity of O(n), where n is the number of elements in the array.

    Let's break down the approach:

    1. Initialize two pointers: one at the start (left) and one at the end (right) of the array.
    2. Swap the elements at these two pointers.
    3. Move the left pointer one step to the right and the right pointer one step to the left.
    4. Repeat the process until the left pointer is greater than or equal to the right pointer.

    Algorithm

    Here is a step-by-step breakdown of the algorithm:

    1. Initialize two pointers: left = 0 and right = nums.length - 1.
    2. While left < right:
      • Swap nums[left] and nums[right].
      • Increment left by 1.
      • Decrement right by 1.
    3. Return the modified array.

    Code Implementation

    function reverseArray(nums) {
      // Initialize two pointers
      let left = 0;
      let right = nums.length - 1;
    
      // Loop until the two pointers meet in the middle
      while (left < right) {
        // Swap the elements at the left and right pointers
        let temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    
        // Move the pointers towards the center
        left++;
        right--;
      }
    
      // Return the reversed array
      return nums;
    }
    
    // Example usage:
    const nums = [2, 9, 1, 5, 8];
    console.log(reverseArray(nums)); // Output: [8, 5, 1, 9, 2]
    

    Complexity Analysis

    The time complexity of this approach is O(n), where n is the number of elements in the array. This is because we are iterating through the array once, swapping elements. The space complexity is O(1) since we are using a constant amount of extra space for the pointers and the temporary variable.

    Edge Cases

    Consider the following edge cases:

    • An empty array: The function should return an empty array.
    • An array with one element: The function should return the same array.
    • An array with two elements: The function should swap the two elements.

    Examples:

    // Edge case: empty array
    console.log(reverseArray([])); // Output: []
    
    // Edge case: single element array
    console.log(reverseArray([1])); // Output: [1]
    
    // Edge case: two elements array
    console.log(reverseArray([1, 2])); // Output: [2, 1]
    

    Testing

    To test the solution comprehensively, consider a variety of test cases:

    • Simple cases with a few elements.
    • Edge cases as discussed above.
    • Larger arrays to ensure performance.

    Example test cases:

    console.log(reverseArray([2, 9, 1, 5, 8])); // Output: [8, 5, 1, 9, 2]
    console.log(reverseArray([1, 2, 3, 4, 5])); // Output: [5, 4, 3, 2, 1]
    console.log(reverseArray([1])); // Output: [1]
    console.log(reverseArray([])); // Output: []
    console.log(reverseArray([1, 2])); // Output: [2, 1]
    

    Thinking and Problem-Solving Tips

    When approaching such problems, consider the following tips:

    • Understand the problem requirements and constraints thoroughly.
    • Think about different approaches and their trade-offs.
    • Start with a simple solution and then optimize it.
    • Practice similar problems to improve your problem-solving skills.

    Conclusion

    Reversing an array is a fundamental problem that helps in understanding array manipulation and indexing. By solving this problem without using built-in functions, you can strengthen your understanding of basic programming concepts and improve your problem-solving skills.

    Keep practicing and exploring different problems to enhance your coding abilities.

    Additional Resources

    For further reading and practice, consider the following resources:

    Keep going with JavaScriptAbout 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free