开始LeetCode的学习

LeetCode第一题 Two Sum

Two Sum这道题大致的意思为:给定一个整形数组,然后根据一个目标数,算出是由数组中哪两个数相加 得出的结果,然后返回这两个数的检索值。

在看到这道题之后我想到了用连个for循环遍历每一个数组成员相加的结果,然后和目标数进行对比得到符合要求的数组成员,然后返回。

虽然这样可以得出结果,但是看了其他人的答案,有个一用到了HashMap,写的很精巧。

public int[] twoSum(int[] numbers, int target) {
    int[] result = new int[2];
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int i = 0; i < numbers.length; i++) {
        if (map.containsKey(target - numbers[i])) {
            result[1] = i + 1;
            result[0] = map.get(target - numbers[i]);
            return result;
        }
        map.put(numbers[i], i + 1);
    }
    return result;
}