题意:给出一个数组,返回和为目标的两个元素下标
可以认为结果有且只有一个【简化的要求,难度系数为easy】
思路:最容易想到的是使用双重循环,时间复杂度O(n^2) 空间复杂度O(1),使用数据结构HashMap存放元素值与下标的映射,时间复杂度O(n),空间复杂度O(n)
public int[] twoSum(int[] nums, int target) {
int[] ans = new int[2];
HashMap
map = new HashMap<>(); //
for(int i = 0; i < nums.length; i++){ //O(n)
if(map.containsKey(target - nums[i])){
ans[1] = i;
ans[0] = map.get(target - nums[i]);
return ans;
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}