牛客hot100--BM50---两数之和(简单难度)

简介: 牛客hot100--BM50---两数之和(简单难度)

目录

题目概述(简单难度)

题目链接:

点我进入牛客

思路与代码

思路展现

这道题目使用哈希是最为简便的

代码示例

import java.util.*;
import java.util.HashMap;
public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        //map用于存储我们整形数组中的数字以及其在数组中对应的下标
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i = 0 ; i < numbers.length ; i++) {
            if(map.containsKey(target - numbers[i])) {
                //注意这里的顺序为什么是这样
                return new int[]{ map.get(target - numbers[i]) + 1 , i + 1};
            }else { 
                map.put(numbers[i] , i);
            }
        }
        return null;
    }
}

时间复杂度:O(n)

一次遍历hashmap查找时间复杂度为O(1),for循环遍历n次,所以时间复杂度为O(N)

空间复杂度:O(n)

申请了n大小的map空间


注意事项

1:牛客中的很多集合都是需要自己导包的,例如这道题题目就需要我们自己导HashMap包

2:那么此时我们的map集合中到底存储的是什么呢?


map中存储的是我们数组中的每个值以及他们的下标

1

3:target - numbers[i]是一个非常巧妙的点,因为我们此时要在这个数组中找到等于target的两个值,并且我们想用一次遍历来完成,所以这样的设计就非常的巧妙了.

4:也是我比较犯迷糊的点,就是为什么这里返回的是new int[]{ map.get(target - numbers[i]) + 1 , i + 1}?

答:我们拿一个测试用例来做举例:

假设此时我们使用【3,2,4】 6这个测试用例来做举例

此时i走到3,发现6 - 3 = 3,map此时为空,根本不存在3这个元素,那么就将3这个元素加入到map当中,然后i走到了2,发现6 - 2 = 4,但是map此时只有3这个元素,并没有4这个元素,所以此时再将2加入到我们的map当中,最终i走到了4这个元素,6 - 4 = 2,发现map中有2这个元素,那么此时就要返回2和4所对应的下标了,因为题目中说了要按照下标升序的顺序返回,我们会发现4是最后才发现的,2是最先发现的,并且让返回的数组下标从1开始计数,所以说我们应该先返回map.get(target - numbers[i]) + 1 ,然后再返回i + 1


相关文章
|
计算机视觉 索引
OpenCv实时设置摄像头参数/获得摄像头参数值的方法论
这篇文章提供了一个OpenCV的实例教程,展示了如何使用`createTrackbar()`函数实时设置和获取摄像头参数值,如饱和度、Gamma和亮度,并通过回调函数在程序中连续修改这些参数。
|
编译器 C语言 C++
【C++】类与对象 II 【深入浅出 万字详解】(上)
【C++】类与对象 II 【深入浅出 万字详解】
140 0
|
缓存 JavaScript 算法
【Vue】快乐学习第二篇
【Vue】快乐学习第二篇
227 0
【Vue】快乐学习第二篇
|
物联网 云计算
2018云计算行业现状及2020年云计算发展趋势
随着云计算的普及应用,2018政府工作报告再次提出,把发展智能制造作为主攻方向,推动“中国制造2025”战略落地。云计算作为三大核心技术之一,2018年云计算行业现状如何?2020年云计算发展趋势又是怎样呢? 在伴随着“互联网+”及“中国制造2025”进程的推进,各个行业开始着手转型升级。
4785 0
|
4天前
|
云安全 人工智能 自然语言处理
|
8天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
802 17
|
11天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
805 59
Meta SAM3开源:让图像分割,听懂你的话
|
2天前
|
人工智能 安全 小程序
阿里云无影云电脑是什么?最新收费价格个人版、企业版和商业版无影云电脑收费价格
阿里云无影云电脑是运行在云端的虚拟电脑,分企业版和个人版。企业版适用于办公、设计等场景,4核8G配置低至199元/年;个人版适合游戏、娱乐,黄金款14元/月起。支持多端接入,灵活按需使用。
239 164