Two Sum

Problem

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 <= 10^4
  • -10^9 <= nums[i] <= 10^9
  • -10^9 <= target <= 10^9
  • Only one valid answer exists.

Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity?

Solution

Uses O(n) space so that the answer is O(n) time.

I had though there might be a solution using two pointers. It might be more efficient space wise, but it definitely wouldn’t beat O(n). The method of searching for a complement is a good trick.

If we wanted to not use extra space, we could sort the array and use something like a binary search when looking for the complement. This would be n * (log(n)) for the sort + log(n) for the search. Obviously this isn’t better than O(n), though.

class Solution {
    public int[] twoSum(int[] nums, int target) {
        var m = new HashMap<Integer, Integer>();

        for (int i = 0; i < nums.length; i++) {
            var complement = target - nums[i];
            if (m.containsKey(complement)) {
                return new int[]{i, m.get(complement)};
            }
            m.put(nums[i], i);
        }

        return null;
    }
}

Recent posts from blogs that I like

Naturalists: Sorolla and Zorn

Around 1890, two aspiring painters passed through a phase of Naturalism: in Spain, Joaquín Sorolla, and in Sweden, Anders Zorn, both on their way to become masters.

via The Eclectic Light Company

Moving away from Tailwind, and learning to structure my CSS

Hello! 8 years ago, I wrote excitedly about discovering Tailwind. At that time I really had no idea how to structure my CSS code and given the choice between a pile of complete chaos and Tailwind, I was really happy to choose Tailwind. It helped me make a lot of tiny sites! I spent the last week or ...

via Julia Evans

Add an LLM policy for rust-lang/rust

No comment on this PR may mention the following topics: Long-term social or economic impact of LLMs The environmental impact of LLMs Anything to do with the copyright status of LLM output Moral judgements about people who use LLMs We have asked the moderation team to help us enforce these rules. – A...

via Drew DeVault