第一题leetCode 两数之和

1,给定一个整型的数组,给定一个值,当数据中两个数之和等于给定的值时返回,两个整数在数组中的下标

我的思路:两层遍历,如果两个的数的和相加,等于给定的值,返回一个整形数组,数组内容为当前的下标

暴力遍历的方法比较简单,不做罗列

新思路:利用hashmap

声明一个hashmap,key为元素的值,value为元素的下标,循环数组

如果map中不存在target-当前值得key则,存入map,继续遍历,

如果存在key=target-当前值  直接返回当前下标和key值为差值的下标

HashMap<Integer,Integer> map = new HashMap<>();
for (int i = 0;i<nums.length;i++){
if(!map.containsKey(target-nums[i])){
map.put(nums[i],i);
}else{
int result = map.get(target-nums[i]);
tagtNums[0] = result;
tagtNums[1] = i;

}
}

猜你喜欢

转载自www.cnblogs.com/dubin/p/12574908.html