Start learning free

LESSON 87 OF 410 · CONDITIONAL STATEMENTS - CHALLENGES

Recreating the abs() function in JavaScript with O(1) Time Complexity

Practice Read the full explanation

The absolute value function (abs() in many languages) returns the absolute value of a number. This means that it returns a number's positive value. You can think of it as the distance away from zero.

Create your own function that recreates this functionality, using the name and parameter n from the starter code.

Examples:

abs(-12) ➞ 12

abs(-544) ➞ 544

abs(250) ➞ 250

abs(0) ➞ 0

abs(-14) ➞ 14

Note:

Do not use the absolute value function provided by JavaScript (it will defeat the purpose of the challenge)


Hints:


You can make use of < operator with an if statement to check if n is negative.

You can add an else statement to handle the case when n is positive.
STEP 1 OF 3
    Ctrl + Enter to check

    JAVASCRIPT · CONDITIONAL STATEMENTS - CHALLENGES

    Recreating Abs in JavaScript, explained

    Understanding the Problem

    The core challenge of this problem is to determine the absolute value of a number without using the built-in abs() function. The absolute value of a number is its non-negative value, regardless of its sign. This function is commonly used in mathematical computations, data analysis, and various algorithms where distance or magnitude is considered.

    Potential pitfalls include handling edge cases such as zero and negative zero, and ensuring the function works for both integers and floating-point numbers.

    Approach

    To solve this problem, we need to check if the number is negative. If it is, we return its positive counterpart; otherwise, we return the number as is.

    Let's start with a naive solution:

    function abs(n) {
      // Check if the number is negative
      if (n < 0) {
        // Return the positive counterpart
        return -n;
      } else {
        // Return the number as is
        return n;
      }
    }
    

    This solution is straightforward and works in constant time, O(1), since it only involves a simple conditional check and possibly a negation operation.

    Algorithm

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

    1. Check if the input number n is less than zero.
    2. If n is negative, return -n.
    3. If n is non-negative, return n.

    Code Implementation

    Below is the JavaScript implementation of the abs() function:

    function abs(n) {
      // Check if the number is negative
      if (n < 0) {
        // Return the positive counterpart
        return -n;
      } else {
        // Return the number as is
        return n;
      }
    }
    
    // Test cases
    console.log(abs(-1.217197940)); // ➞ 1.21719794
    console.log(abs(-544.0));       // ➞ 544
    console.log(abs(250.3));        // ➞ 250.3
    console.log(abs(0));            // ➞ 0
    console.log(abs(-0.14));        // ➞ 0.14
    

    Complexity Analysis

    The time complexity of this solution is O(1) because it involves a single conditional check and possibly a negation operation, both of which are constant-time operations.

    The space complexity is also O(1) as we are not using any additional data structures that grow with the input size.

    Edge Cases

    Potential edge cases include:

    • n = 0: The function should return 0.
    • n = -0: The function should return 0.
    • Very large positive or negative numbers: The function should handle them correctly without overflow.

    Examples:

    console.log(abs(0));    // ➞ 0
    console.log(abs(-0));   // ➞ 0
    console.log(abs(-1e10)); // ➞ 10000000000
    console.log(abs(1e10));  // ➞ 10000000000
    

    Testing

    To test the solution comprehensively, we should include a variety of test cases:

    • Positive numbers
    • Negative numbers
    • Zero and negative zero
    • Floating-point numbers
    • Very large and very small numbers

    Example test cases:

    console.log(abs(123));       // ➞ 123
    console.log(abs(-123));      // ➞ 123
    console.log(abs(0));         // ➞ 0
    console.log(abs(-0));        // ➞ 0
    console.log(abs(1.23));      // ➞ 1.23
    console.log(abs(-1.23));     // ➞ 1.23
    console.log(abs(1e10));      // ➞ 10000000000
    console.log(abs(-1e10));     // ➞ 10000000000
    

    Thinking and Problem-Solving Tips

    When approaching such problems, consider the following tips:

    • Understand the problem requirements and constraints thoroughly.
    • Break down the problem into smaller, manageable parts.
    • Start with a simple, naive solution and then optimize it.
    • Consider edge cases and test your solution against them.
    • Practice solving similar problems to improve your problem-solving skills.

    Conclusion

    In this blog post, we discussed how to recreate the abs() function in JavaScript. We covered the problem definition, approach, algorithm, code implementation, complexity analysis, edge cases, and testing. Understanding and solving such problems is crucial for developing strong problem-solving skills and improving your coding abilities.

    We encourage you to practice and explore further to deepen your understanding.

    Additional Resources

    For further reading and practice problems, 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