leetcode:求两数之和,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
程序员文章站
2022-07-14 14:26:40
...
1.题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
本题思路
1.使用map集合时间复杂度是O(1)
2.Map集合的键存储的是数组的值,Key对应的Value对应的是数组的下标
3.遍历数组,使用目标值target - nums[i]的当前值是否在map集合里存在键值,存在的话返回一个数组
4.具体看代码
2.代码实现
import java.util.*;
class Solution {
// 1.寻找数组中的两个值的和是目标值,并返回他们的数组下标
// 2.数组中同一个元素不能使用两遍
public int[] twoSum(int[] nums, int target) {
// 使用Map集合键值对的形式,键是数组的值,键对应的值是V
Map<Integer,Integer> map = new HashMap<>();
for(int i = 0;i < nums.length;i++){
// 如果有集合中的有差值的元素,就把它放进新的数组里
if(map.containsKey(target - nums[i])){
return new int[]{map.get(target - nums[i]),i};
}
map.put(nums[i],i);
}
return null;
}
}
3.总结
- 首先map集合会把每一个遍历的数组元素的键和值都会放到集合中
- 如果数组中包含target - nums[i],创建一个新的数组,里面存储当前值的下标,和所找到值的下标,也就是map集合的value
- 积累,加油!!!
上一篇: oracle对用户的操作(创建、赋权)
下一篇: Leetcode打卡8:题号1:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案
推荐阅读
-
LeetCode 1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素
-
两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。...
-
c语言和Java语言实现,两数之和:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
[每日一题]给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。
-
算法(C++):给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,假设每种输入只会对应一个答案
-
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的两个整数 - python实现
-
python练习题---给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。