1. Two Sum

1. 题目

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].

2. 答案

2.1 golang版

func twoSum(nums []int, target int) []int {
    temp := make(map[int]int)
    for index, value := range(nums){
        if result,ok := temp[target-value]; ok{
            return []int{result,index}
        } else{
            temp[value] = index
        }
    }
    return nil
}

2.2 python版

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        temp= {}
        for index, value in enumerate(nums):
            if target-value in temp.keys():
                return [temp[target-value], index]
            else:
                temp[value] = index

3. 分析

遍历整个数组,将已经遍历的数字做为key,索引做为value,存入map。后面遍历的数组只需要在字典中匹配前面的数字中是否有符合目标的数字就可以了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容