欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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.总结

  1. 首先map集合会把每一个遍历的数组元素的键和值都会放到集合中
  2. 如果数组中包含target - nums[i],创建一个新的数组,里面存储当前值的下标,和所找到值的下标,也就是map集合的value
  3. 积累,加油!!!

 

 

相关标签: leetcode

推荐阅读