📅  最后修改于: 2023-12-03 14:54:51.567000             🧑  作者: Mango
给定一个具有 n 个元素的数组和一个目标值 target,在数组中找到两个数之和等于目标值并返回它们的索引。
假设每个输入只有一个答案,并且不可以重复利用相同的元素。
返回一个数组,包含两个数字的索引位置,其中第一个数字必须小于第二个数字。假设答案存在且只有一个解。
输入: nums = [2, 7, 11, 15], target = 9
输出: [0, 1]
解释: 数组中的数字 2 和 7 的和等于目标值 9,它们的索引分别为 0 和 1。
要找到数组中两个数之和等于目标值,需要使用一种快速查找的数据结构,如哈希表(HashMap)。通过遍历数组,将数组元素与目标值的差作为键,元素在数组中的索引作为值,存储在哈希表中。同时,检查当前元素是否存在于哈希表中的键中,如果存在,则可以得到目标值。
import java.util.HashMap;
public class TwoSum {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[]{map.get(complement), i};
}
map.put(nums[i], i);
}
return new int[0];
}
}
以上是一个用于寻找数组中两个数之和等于目标值的索引位置的程序实现。