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

LeetCode 1-两数之和

LeetCode第1题 两数之和

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

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

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]
示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

1. 我的解答:O(n^2)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int len = nums.length;
        int[] answer = new int[2];
        for(int i=0;i<len-1;i++){
            for(int j=i+1;j<len;j++){
                if(nums[i]+nums[j]==target){
                    answer[0]=i;
                    answer[1]=j;
                }
            }
        }
        return answer;
    }
}

在这里插入图片描述

2. 进阶解答

在这里插入图片描述
由于哈希表为空,不可能找到与第一个数匹配的数字,所以先将第一个数字和对应的下标放入哈希表,因为map没有直接得到key的方法,所以将要返回的index作为values存储,数字作为key存储,然后从第二个数开始遍历,如果哈希表中存在key满足与当前数相加为目标数,直接返回当前下标与哈希表中那个数对应的values。不然将数字和下标放入哈希表,开始下一轮循环。

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

3. 常用map方法

在这里插入图片描述

相关文章:

  • 主干网络篇 | YOLOv5/v7 更换主干网络之 ResNet50/ResNet101 | 对比实验必备
  • RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)
  • hive拉链表详解
  • 制作WIFI二维码,实现一键扫描连接WIFI
  • 【无线传感网】LEACH路由算法
  • 动态 SQL
  • qt登录和闹钟实现
  • 修改SpringBoot项目配置文件
  • Python爬虫框架:Scrapy、EasySpider与FEAPDER的比较与实践
  • Vue70-路由的几个注意点
  • 计算机网络 MAC地址表管理
  • Zookeeper基础教程
  • 千年古城的味蕾传奇-平凉锅盔
  • HAL库开发--串口
  • windows安装spark
  • 浏览器支持http-flv协议
  • 网络虚拟化考题
  • 番外篇 | YOLOv8算法解析和实战应用:车辆检测 + 车辆追踪 + 行驶速度计算
  • Redis高并发高可用
  • 山东济南比较出名的起名大师的老师,中国最厉害的改名大师颜廷利:短命的小草,年年自损;长寿的大树,万古长青。。。(升命学说)
  • 央行:货币与物价的关系受多重因素影响,提振物价的关键在于扩大有效需求
  • 印巴战火LIVE丨印巴互相发动无人机袭击,巴官员称两国已在国安层面接触
  • 两部门发布山洪灾害气象预警:北京西部、河北西部等局地山洪可能性较大
  • 我驻苏丹使馆建议在苏中国公民尽快撤离
  • 金融监管总局将出八大增量政策,李云泽详解稳楼市稳股市“组合拳”
  • 纪念|“补白大王”郑逸梅,从藏扇看其眼光品味