给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。每个数字不能复用。
1.暴力求解
class Solution {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
int[] res = new int[2];
for (int i = 0; i < len; ++i) {
for (int j = i + 1; j < len; ++j) {//从i的下一个开始遍历
if (nums[i] + nums[j] == target) {
res[0] = i;
res[1] = j;
return res;
}
}
}
return null;
}
}
2.使用哈希表,空间换时间,key存放值,value存放索引
class Solution {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
HashMap map = new HashMap<>();
map.put(nums[0],0);
for(int i = 1; i < len; i++){
if(map.containsKey(target - nums[i])){
return new int[]{i, map.get(target - nums[i])};
}
map.put(nums[i],i);
}
return null;
}
}



