给定一个整数数组 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; } }
原文:https://www.cnblogs.com/liushoudong/p/13493491.html