1. Two Sum

2018-05-31  本文已影响0人  Nancyberry

Description

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

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

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

Solution

Two-pointer, O(n ^ 2), S(1)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for (int i = 0; i < nums.length - 1; ++i) {
            for (int j = i + 1; j < nums.length; ++j) {
                if (nums[i] + nums[j] == target) {
                    return new int[] {i, j};
                }
            }
        }
        
        return new int[] {-1, -1};
    }
}

HashMap, O(n), S(n)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> val2Idx = new HashMap<>();
        
        for (int i = 0; i < nums.length; ++i) {
            int pair = target - nums[i];
            
            if (val2Idx.containsKey(pair)) {
                return new int[] {val2Idx.get(pair), i};
            }
        
            val2Idx.put(nums[i], i);
        }
        
        return new int[] {-1, -1};
    }
}
上一篇 下一篇

猜你喜欢

热点阅读