Open bitfishxyz opened 5 years ago
按照题目的意思,这个数组中应该不会有重复元素
import java.util.*;
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = numsToMap(nums);
int[] res = new int[2];
// 循环数组,每次假设当前元素是一个值,看看能不能找到另一个来和它匹配
for (int i = 0; i < nums.length; i++) {
// 我们现在希望这个值在map中
int searchValue = target - nums[i];
if (map.get(searchValue) != null && map.get(searchValue) != i) {
res[0] = i;
res[1] = map.get(searchValue);
return res;
}
}
return res;
}
/**
* 将一个数组转化为 值 --> 索引 类型的map
* @param nums
* @return
*/
public Map<Integer, Integer> numsToMap(int[] nums){
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
map.put(nums[i], i);
}
return map;
}
}
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例: