问题描述: 给定一个整型数组和目标值,返回数组中两数之和等于目标值的下标。
要求:不许使用一个值两次
解法一: 两次循环
public int[] twoSum(int[] nums, int target){
for(int i = 0; i < nums.length; i++){
for(int j = i+1; j < nums.length; j++){
if(nums[i] + nums[j] == target){
return new int[]{i,j};
}
}
}
return null;
}
解法二: 借助hashtable
public int[] twoSum(int[] nums, int target){
Map<Integer, Integer> mp = new HashMap<>();
for(int i = 0; i<nums.length; i++){
int temp = target - nums[i];
if(map.containsKey(temp)){
return new int[]{mp.get(temp),i};
}
mp.put(nums[i], i);
}
return null;
}
解法二来源leetcode: https://leetcode.com/articles/two-sum/