leetcode1:两数之和

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

==============================Go===============================

func twoSum(nums []int, target int) []int {
    m := map[int]int{}
    for ind, num := range nums {
        if v, ok := m[num]; ok{
            return []int{ind, v}
        } else {
            m[target - num] = ind
        }
    }
    return nil
}
------------------------
func twoSum(nums []int, target int) []int {
    result := []int{}
    m := make(map[int]int)
    for i, k := range nums {
        if value, exist := m[target - k]; exist {
            result = append(result, value)
            result = append(result, i)
        }
        m[k] = i
    }
    return result
}

=================================Python============================

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for ind, val in enumerate(nums):
            if val in dic:
                return [dic[val], ind]
            else:
                dic[target - val] = ind

================================Java============================

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        int[] result = new int[2];
        for (int i = 0; i < nums.length; i++){
            if (map.get(nums[i]) != null) {
                result[0] = map.get(nums[i]);
                result[1] = i;
            }else {
                map.put(target - nums[i], i);
            }
        }
        return result;
    }
}