. Day 5 - Challenge 1 - Two Sum Skip to main content

Day 5 - Challenge 1 - Two Sum

Solving the Two Sum Problem in JavaScript

The Two Sum problem is a classic coding challenge that involves finding two numbers in an array that add up to a given target sum. In this blog post, we'll walk through the problem-solving process step by step and implement a solution in JavaScript.

Problem Statement

Given an array of integers and a target sum, our task is to find two distinct numbers from the array that add up to the target sum. We need to return the indices of these two numbers in the array.

For example, if the input array is [2, 7, 11, 15] and the target sum is 9, the output should be [0, 1] because 2 + 7 = 9.

Approach

To solve this problem efficiently, we can use a hash map to store the numbers we have encountered so far along with their indices. As we iterate through the array, we can check if the difference between the current number and the target sum exists in the hash map. If it does, then we've found our solution.

Here's the step-by-step approach:

  1. Create an empty hash map to store numbers and their indices.
  2. Iterate through the array.
  3. For each number num at index i, calculate the complement as target - num.
  4. Check if the complement exists in the hash map.
    • If it does, return the indices [hashMap[complement], i].
    • If not, add the current number and its index to the hash map.

Implementation

Let's implement the solution in JavaScript:


function twoSum(nums, target) {
    const hashMap = {};

    for (let i = 0; i < nums.length; i++) {
        const num = nums[i];
        const complement = target - num;

        if (hashMap.hasOwnProperty(complement)) {
            return [hashMap[complement], i];
        }

        hashMap[num] = i;
    }

    return null; // If no solution is found
}

// Example usage
const nums = [2, 7, 11, 15];
const target = 9;
const result = twoSum(nums, target);
console.log(result); // Output: [0, 1]

Demo

Two Sum Problem Solver


Conclusion

The Two Sum problem is a common coding challenge that tests your problem-solving skills and knowledge of hash maps. By using a hash map to keep track of encountered numbers and their indices, we can efficiently solve this problem in linear time complexity.

Remember to analyze the time and space complexity of your solution. In this case, the time complexity is O(n), where n is the number of elements in the array, and the space complexity is O(n) as well due to the hash map.

I hope this blog post helps you understand how to approach and solve the Two Sum problem using JavaScript. Happy coding!

Now write the same program in your favorite language in comment section. 

Other Challenges:

  1. Day 2 Challenges
  2. Day 3 Challenges
  3. Day 4 Challenges

 

Comments

Popular posts from this blog

Day 7 - Challenge 2 - Valid Parentheses: A Guide to Checking Bracket Validity in JavaScript

Valid Parentheses: A Guide to Checking Bracket Validity in JavaScript Brackets are a fundamental part of programming languages and are used to group and structure code. In this blog post, we will explore the problem of determining whether a given string of brackets is valid or not using JavaScript. This problem is commonly referred to as the "Valid Parentheses" problem. Understanding the Problem: The problem statement provides a string that consists of three types of brackets: ( , ) , { , } , [ , and ] . The task is to determine whether the brackets in the string are arranged in a valid manner. For a string to be valid, each opening bracket must have a corresponding closing bracket of the same type, and they must be arranged in the correct order. For example, the strings "(){}[]" and "{[()]}" are valid, while "([)]" and "{{]}" are not. Approach: To solve this problem, we can use a stack data structure. The stack will help us keep tr...

Day 9 - Challenge 2 - Reverse Linked List

Reversing a Singly Linked List in JavaScript: An In-Place Approach Introduction:   Singly linked lists are fundamental data structures in computer science that consist of a sequence of nodes, each containing data and a reference to the next node in the list. Reversing a singly linked list is a classic problem that challenges programmers to manipulate pointers effectively to achieve the desired outcome. In this blog post, we'll explore the problem of reversing a singly linked list using an in-place approach and provide a step-by-step solution in JavaScript. Problem Statement:   Given the head of a singly linked list, our task is to reverse the list in-place and return its new head. In other words, we need to modify the pointers of the nodes in such a way that the direction of the linked list is reversed. Solution Approach:   To solve this problem, we will iterate through the linked list while maintaining three pointers: previous , current , and next . The previous pointer...

Day 8 - Challenge 3 - Unique Email Addresses

Solving the Problem of Counting Unique Email Addresses in JavaScript Introduction:  In today's digital age, email communication is an integral part of our lives. However, dealing with unique email addresses can sometimes be challenging due to variations that arise from period usage and the '+' character. In this blog post, we will explore how to tackle the problem of counting unique email addresses using JavaScript. Problem Statement: We are given a list of email addresses, and our task is to determine the number of unique email addresses. A unique email address consists of a local name and a domain name. The local name may contain periods ('.') and the character '+' which is ignored. Example:  Let's consider the following list of email addresses: "test.email+abc@gmail.com" "test.e.mail@gmail.com" "testemail@gmail.com" In this case, the number of unique email addresses is 1, as all three email addresses map to the same uniqu...