Skip to content

Files

Latest commit

54258df · Feb 12, 2021

History

History

0001.Two Sum

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Feb 12, 2021
Feb 12, 2021
Mar 17, 2020
Mar 17, 2020
Mar 17, 2020
Feb 12, 2021
Oct 20, 2020
Feb 12, 2021
Mar 17, 2020
Mar 17, 2020

English Version

题目描述

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法

用哈希表(字典)存放数组值以及对应的下标。

遍历数组,当发现 target - nums[i] 在哈希表中,说明找到了目标值。

Python3

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        helper = {}
        for i, v in enumerate(nums):
            num = target - v
            if num in helper:
                return [helper[num], i]
            helper[v] = i

Java

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0, n = nums.length; i < n; ++i) {
            int num = target - nums[i];
            if (map.containsKey(num)) {
                return new int[]{map.get(num), i};
            }
            map.put(nums[i], i);
        }
        return null;
    }
}

...