当前位置: 首页 > 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/a/16754.html

相关文章:

  • C获取程序名称的方法
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • UVC 输出视频格式修改和windows下数据分析
  • 【嵌入式开发】单片机CAN配置详解
  • -1大于4?负数与无符号整数类型:size_t的比较问题(strlen)
  • AtomicInteger 和 AtomicIntegerFieldUpdater的区别
  • 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常用命令与使用总结