Hot1001. 两数之和

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hot1001. 两数之和相关的知识,希望对你有一定的参考价值。

简单题
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

解法:
需要一种能够快速寻找数组中是否存在目标元素。如果存在,需要找出它的索引。

使用哈希表,可以将寻找 target - nums[i] 的时间复杂度降低到从 O(N) 降低到 O(1)。

创建一个哈希表,对于每一个 nums[i],首先查询哈希表中是否存在 target - nums[i],然后将 nums[i] 插入到哈希表中,即可保证不会让 nums[i] 和自己匹配。
注意的点:
①map:
key->数组值
val->下标

②已经存在map中的下标肯定是在前面,所以j结果返回数组的时候先把map中的那个下标放在前面。

③返回null的两种写法:
return null;
return new int[0];

代码:

class Solution 
    public int[] twoSum(int[] nums, int target) 
        Map<Integer,Integer> map = new HashMap<>();
        for(int i=0;i<nums.length;i++)
            int temp = target - nums[i];
            if(map.containsKey(temp))
                return new int[]map.get(temp),i;
            
            map.put(nums[i],i);

        
        return new int[0];

    

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于Hot1001. 两数之和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 热题 HOT 1001. 两数之和

LeetCode 热题 HOT 1001. 两数之和

LeetCode Hot 100 --- 两数之和(java)

两数之和(哈希解法)

两数之和(Python and C++解法)

两数之和(Python and C++解法)