当前位置: 首页 > article >正文

BM50-两数之和

题目

给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。

(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)

数据范围:2≤len(numbers)≤10^5,−10≤numbersi≤10^9,0≤target≤10^9。

要求:空间复杂度 O(n),时间复杂度 O(nlogn)。

示例1

输入:[3,2,4],6

返回值:[2,3]

说明:因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以返回[2,3]。

示例2

输入:[20,70,110,150],90

返回值:[1,2]

说明:20+70=90。


思路

使用Map来降低时间复杂度,遍历数组,如果没有 (target - 当前值) 就将当前数字存入哈希表,如果有,返回该数字下标即可。

哈希表可以优化第二遍循环中对元素的检索速度。


代码

import java.util.*;

public class Solution {
    /**
     * 
     * @param numbers int整型一维数组 
     * @param target int整型 
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        HashMap<Integer, Integer> map = new HashMap<>();
        //遍历数组
        for(int i = 0; i < numbers.length; i++) {
            //将不包含target - numbers[i]装入map中,包含的话直接返回下标
            if(map.containsKey(target - numbers[i])) {
                return new int[]{map.get(target - numbers[i]) + 1, i + 1};
            } else {
                map.put(numbers[i], i);
            }
        }
        throw new IllegalArgumentException("No solution");
    }
}
  • 时间复杂度:O(n) 一次遍历hash索引查找时间复杂度为O(1)。
  • 空间复杂度:O(n) 申请了n大小的map空间。

http://www.kler.cn/news/16754.html

相关文章:

  • ovs-vsctl 命令详解
  • js判断是否为null,undefined,NaN,空串或者空对象
  • 第一章--第一篇--了解 ChatGPT
  • 框架学习之KOCA框架简介
  • 【python基础语法八】正则表达式
  • MIT教授Tegmark:GPT-4敲响警钟,百年后人类何去何从丨智源大会嘉宾风采
  • 数据帧去掉VlanTag的代码(802.1Q)
  • go 语言环境安装(Windows 系统下安装)
  • ( 数组和矩阵) 566. 重塑矩阵 ——【Leetcode每日一题】
  • osg::Drawable类通过setDrawCallback函数设置回调函数的说明
  • 构建ChatGPT 镜像,并将其部署到 Docker 容器中。
  • 基于Matlab刻度盘识别角度计算
  • C++:计算机操作系统:多线程:高并发中的线程
  • ViveNAS - 一个基于LSM tree的文件存储实现 (一)
  • C++ srand()和rand()用法
  • hadoop伪分布式搭建教程
  • 【react从入门到精通】React JSX详解
  • pytorch学习率设置——optimizer.param_groups、对不同层设置学习率、动态调整学习率。
  • Java中几种常量池面试总结
  • OVS常用命令与使用总结
  • Python_PyStray结合Tkinter显示系统托盘图标
  • SpringMVC与SpringWebFlux
  • 【Spring Security】| 从0到1编写一个权限认证 | 学会了吗?
  • MEET开发者 | 选择和努力一样重要,专访杭州三汇测试工程师齐雪莲
  • c++标准模板(STL)(std::array)(三)
  • 高程实验8队列
  • ROS Noetic版本 rosdep找不到命令 不能使用的解决方法
  • 剑指 Offer 51. 数组中的逆序对
  • 计算机视觉 | 人工智能 自己总结 (下)
  • 数据库之事务隔离级别详解