LeetCode1.两数之和(超简单讲解)

1.两数之和

题目

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

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例

示例1

java 复制代码
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 

示例2

java 复制代码
输入:nums = [3,2,4], target = 6
输出:[1,2]

示例3

java 复制代码
输入:nums = [3,3], target = 6
输出:[0,1]

解题思路

哈希表

以第一个例子nums=2,7,11,15target = 9 为例,对数组中的每个元素而言,我们可以找和这个元素相加为target的元素(暂且称为互补元素),如果这个互补元素存在,那么就输出它们的下标:

  • 2:存在7,使得2+7=9,它们符合条件
  • 7:存在2,使得7+2=9,它们符合条件
  • 11,不存在-2,使得11+(-2)=9,不符合条件
  • 15,不存在-6,使得11+(-6)=9,不符合条件
    可以看到2+7和7+2这两种情况其实重复输出了,为了避免重复输出,那么我们可以遍历数组,并逐个把元素放入HashMap,在放入的时候,就判断对于当前元素,现在HashMap中是否有互补元素,如果有就直接输出他们的下标,不将互补元素放入哈希表中。否则,如果对于当前元素,现在HashMap中没有互补元素,那么我们就将当前元素放入哈希表中。
    同时,HashMap也可以保证,值相同的元素只会放入一次,如果nums=2,2,7,11,15target = 9 ,那么2也只会被放入一次。

实现设计

复制代码
可以用HashMap存放<元素值,元素下标>键值对,如果符合条件的元素存在,就将他们的下标输出。否则就将这个元素和它的小标存入哈希表。

详细代码

java 复制代码
class Solution {
    public int[] twoSum(int[] nums, int target) {
    	//map的键存在元素值,map的值存在元素的下标
        HashMap<Integer,Integer> map = new HashMap<>();
        //res存放符合条件的下标对
        int[] res=new int[2];
        for(int i=0;i<nums.length;i++){
        	//tmp中暂存当前元素的互补元素
            int tmp = target-nums[i];
            //如果现在哈希表中存在当前元素的互补元素,把它们的下标放入res
            if(map.containsKey(tmp)){
                res[0]=i;
                res[1]=map.get(tmp);
            }else{
                map.put(nums[i],i);
            }
        }
        return res;
    }
}
相关推荐
8Qi85 分钟前
LeetCode 337:打家劫舍 III(House Robber III)—— 题解 ✅
算法·leetcode·二叉树·动态规划
地平线开发者5 分钟前
从 INT64 Div 算子约束到 Cast 修复全流程
算法
2601_961194026 分钟前
教资科三美术考什么|初中高中美术题型考点和模板资料
leetcode·elasticsearch·职场和发展·蓝桥杯·pat考试·lucene
AI科技星8 分钟前
基于奇合数边界的离散解析数论与双螺旋宇宙本体大统一体系论文全部数学公式汇总表
人工智能·算法·机器学习·架构·学习方法
糖果店的幽灵12 分钟前
Pandas DataFrame 数据结构详解
数据结构·pandas
地平线开发者20 分钟前
Horizon 模型多 Batch 配置
算法·自动驾驶
czhaii32 分钟前
GB2312简体中文编码表
单片机·算法
8Qi841 分钟前
LeetCode 121 & 122:股票买卖问题(DP 对比题解)✅
算法·leetcode·职场和发展·动态规划
一只齐刘海的猫1 小时前
【Leetcode】 接雨水
java·算法·leetcode
南境十里·墨染春水1 小时前
讲讲移动语义
算法