All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0001_0100.s0001_two_sum.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0001_0100.s0001_two_sum;

// #Easy #Top_100_Liked_Questions #Top_Interview_Questions #Array #Hash_Table
// #Data_Structure_I_Day_2_Array #Level_1_Day_13_Hashmap #Udemy_Arrays #Big_O_Time_O(n)_Space_O(n)
// #2023_08_09_Time_1_ms_(99.37%)_Space_43.5_MB_(94.36%)

import java.util.HashMap;
import java.util.Map;

/**
 * 1 - Two Sum\.
 *
 * Easy
 *
 * 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 would have **_exactly_ one solution** , and you may not use the _same_ element twice.
 *
 * You can return the answer in any order.
 *
 * **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] 
 *
 * **Constraints:**
 *
 * *   2 <= nums.length <= 104
 * *   -109 <= nums[i] <= 109
 * *   -109 <= target <= 109
 * *   **Only one valid answer exists.**
 *
 * **Follow-up:** Can you come up with an algorithm that is less than O(n2) time complexity?
**/
public class Solution {
    public int[] twoSum(int[] numbers, int target) {
        Map indexMap = new HashMap<>();
        for (int i = 0; i < numbers.length; i++) {
            Integer requiredNum = target - numbers[i];
            if (indexMap.containsKey(requiredNum)) {
                return new int[] {indexMap.get(requiredNum), i};
            }
            indexMap.put(numbers[i], i);
        }
        return new int[] {-1, -1};
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy