1. Two Sum

思路是用 HashMap 保存 <元素, 下标>。
遍历数组,对于每个元素nums[i],先找 HashMap中是否已经有target - nums[i] 存在( HashMap.containsKey(key) ),存在则返回结果(下标组成的长为2的数组)。不存在则保存, 即 <元素, 下标>。
题目规定每个 target 只有 exactly one solution。

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

你可能感兴趣的:(1. Two Sum)