解法一:暴力解法,循环遍历,两数之和是target,则就返回两个值下标
解法二:利用hashmap,在存值的过程中,判断另一个值是否存在,时间复杂度为n,但是空间复杂度也是n,需要注意的是序号存储在返回数组的时候是由小到大的,所以第一个交标存储的是hashmap里面查询出来的交标,第二个交标是循环到当前数组的交标
写代码的时候由于没有提示,hashmap.put(key,value);以及hashmap.get();以及hashmap.containskey();
class Solution {
public int[] twoSum(int[] nums, int target) {
int [] result = new int[2];
HashMap<Integer,Integer> HashMap = new HashMap<>();
for(int i=0;i<nums.length;i++){
if(HashMap.containsKey(target-nums[i])){
result[1] = i;
result[0] = HashMap.get(target-nums[i]);
}
HashMap.put(nums[i],i);
}
return result;
}
}