题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [2,7]
思路分析:
简单来说暴力枚举,俩个for循环嵌套,就一个个试出来了。
优雅一点,就知道数据结构的魅力了...(我也刚明白)
合理运用Map,因为map取值是O(1) [没有hash相同的key时O(1)]。
- 遍历数组,给map,添加键值对
- 从map里找另一个值(其值为 target结果 - 当前遍历的array[i])
- 2.1 找到另一个的值
- 2.1.1 找到另一个的值且 不相等(相加的2个数)
- 2.1.1 找到另一个的值且 相等且 其键大于1(基本为2); ps:键为几,就是数组中存在几个key值
代码:
import java.util.HashMap;
public class AddNum {
int[] add(int[] array, int target){
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < array.l