Skip to main content

1. Two Sum

Problem Statement

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input has exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Examples

Example 1:
Input: nums = [2,7,11,15], target = 9 Output: [0,1] Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6 Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6 Output: [0,1]

Difficulty

Easy

Constraints

  • 2 ≤ nums.length ≤ 10⁴
  • -10⁹ ≤ nums[i] ≤ 10⁹
  • -10⁹ ≤ target ≤ 10⁹
  • Only one valid answer exists

Solution 1: Using Hash Map

Approach:

  1. Use a hash map to store value → index
  2. Iterate through array
  3. Check complement (target - current value)
  4. If found, return answer
  5. Else store value

Java


class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int need = target - nums[i];
            if (map.containsKey(need)) {
                return new int[]{map.get(need), i};
            }
            map.put(nums[i], i);
        }
        return new int[]{};
    }
}

C++


vector twoSum(vector& nums, int target) {
    unordered_map m;
    for (int i = 0; i < nums.size(); i++) {
        int need = target - nums[i];
        if (m.count(need)) return {m[need], i};
        m[nums[i]] = i;
    }
    return {};
}

Python


def twoSum(nums, target):
    seen = {}
    for i, num in enumerate(nums):
        need = target - num
        if need in seen:
            return [seen[need], i]
        seen[num] = i

Complexity

Time: O(n)

Space: O(n)

← All Problems

Comments

Popular posts from this blog

128. Longest Consecutive Sequence - Solution 128. Longest Consecutive Sequence Problem Statement Given an unsorted array of integers nums , return the length of the longest consecutive elements sequence. You must write an algorithm that runs in O(n) time. Examples Example 1: Input: nums = [100,4,200,1,3,2] Output: 4 Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4. Example 2: Input: nums = [0,3,7,2,5,8,4,6,0,1] Output: 9 Difficulty Hard Solution 1: Sorting Approach: Sort the array and traverse it. Skip duplicates. If the current number is prev + 1 , increment the count; otherwise, reset it. Keep track of the maximum count. Java class Solution { public int longestConsecutive(int[] nums) { if (nums.length == 0) return 0; Arrays.sort(nums); int ans = 1, t = 1; for (int i = 1; i C++ class Solution { publi...
133. Clone Graph - Solution 133. Clone Graph Problem Statement Given a reference of a node in a connected undirected graph, return a deep copy (clone) of the graph. Each node in the graph contains a value ( int ) and a list ( List[Node] ) of its neighbors. class Node { public int val; public List<Node> neighbors; } Test case format: For simplicity, each node's value is the same as the node's index (1-indexed). For example, the first node with val = 1 , the second node with val = 2 , and so on. The graph is represented in the test case using an adjacency list. An adjacency list is a collection of unordered lists used to represent a finite graph. Each list describes the set of neighbors of a node in the graph. The given node will always be the first node with val = 1 . You must return the copy of the given node as a reference to the cloned graph. Examples Example 1: Input: a...