【leetcode刷题】1.两数之和——Java版

前端技能树,面试复习第 54 天—— 手写代码:情景题 前端修罗场提供全网最专业的前端优质文章与社区服务,为应届生,初中级前端工程师提供全面、优质的面试服务、技能提升、职场解惑服务!内容包含:前端面试辅导,前端面试题,前端交流,前端答疑,前端基础知识,前端知识体系,技能树搭建,Javascript,CSS,CSS3,HTML,React,Vue,小程序,前端简历,职业交流,远程工作,英文交流,英文提升,外企,互联网,国企,大厂,牛客面试题,掘金面试题,面经,优质前端文章分享... 阅读详情

有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。        ——leetcode评论区

题目: 

给定一个整数数组 nums 和一个整数目标值 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 <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案
Related Topics

  • 数组
  • 哈希表

 Solution1 

第一种几乎有些java基础的人都可以做出来,双重for循环,暴力查找,有没有相加==target的。

即使简单,也要注意时间复杂度。

  • 内层for循环从i+1开始,因为同一个元素不能使用两遍。
  • 找到解后就可以break退出,因为只有一个解。(有无break运行时间相差近10s)

Code 

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

 Result

 

复杂度分析

复杂度分析

  • 时间复杂度:O(N^2),其中 N 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。

  • 空间复杂度:O(1)。

 

Solution2 

可以看到题目相关里除了数组还有哈希表,那么考虑将数据存储在hashmap中,这样可以直接判断map中是否包含`x`。省去一层循环。

对于每一个 `x`,我们首先查询哈希表中是否存在 `target - x`,然后将 `x` 插入到哈希表中,即可保证不会让 `x` 和自己匹配。

这里牺牲了内存占用,节约了时间。

Code 

class Solution {
        public int[] twoSum(int[] nums, int target) {
            HashMap<Integer, Integer> map = new HashMap<>();
            for (int i = 0; i <nums.length ; i++) {
                if (map.containsKey(target-nums[i])){
//              这种写法很简单
                    return new int[]{map.get(target-nums[i]),i};
                }
                map.put(nums[i],i);
            }
            return null;
        }
    }

Result 

复杂度分析

  • 时间复杂度:O(N),其中 N 是数组中的元素数量。对于每一个元素 x,我们可以 O(1) 地寻找 target - x。

  • 空间复杂度:O(N),其中 N 是数组中的元素数量。主要为哈希表的开销。

 

vs code , 配置 claude code 插件, 默认选项 : --dangerously-skip-permission 摘要:本文介绍如何在VS Code中为Claude Code插件配置--dangerously-skip-permission参数,包含两种方法:图形界面设置(适合新手)和直接编辑settings.json(精准配置)。该参数会跳过权限检查,仅建议在本地测试环境中使用。配置后需通过命令面板验证参数是否生效,并注意安全风险,避免在生产环境使用。多参数配置时需用数组格式,不同版本插件可能键名略有差异。 阅读详情

相关推荐

三甲医院网络架构与安全建设实战

华为OceanStor] [华为OceanStor][PACS存储双活] [HIS数据库同步]患者隐私 数据脱敏 天清Web防火墙动态脱敏策略。主数据中心 --[OTV专线]-- 备数据中心。实现医疗业务网/卫生专网/互联网三网隔离。核心业务配置(华为CE6865)自动备份配置(每天02:00)安全事件响应(30分钟SLA)漏洞扫描(每周日00:00)实现医疗物联网统一接入管控。五、等保2.0合规关键配置。堡垒机登录(双因素认证)四、医疗物联网安全方案。

有小小的远大抱负 1911

1. 两数之和

两数之和 给定一个整数数组 nums 和一个整数目标值 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 输出:[..

MintHelen的博客 236

大漠多线程增强版:解决窗口消失、坐标错乱与识别卡死

多线程环境下窗口自动化面临的核心挑战,本质是GDI资源非线程安全、HWND生命周期失控及图像引擎状态污染三大底层问题。Windows GUI编程中,跨线程共享hDC、缓存失效的窗口句柄、OpenCV静态Mat等设计缺陷,导致FindPic失败、GetCursorPos异常、坐标跳变等典型故障。本方案通过线程局部存储(TLS)重构资源生命周期、WinEventHook+心跳探测构建实时窗口状态链、ABI对齐的多语言内存契约,实现稳定低延迟的并发UI识别与控制。适用于游戏多开监控、电商RPA、后台UI状态采集等

weixin_30561177的博客 476

用Java做LeetCode第一题:两数之和

玩leetcode做题

m0_72710328的博客 717

Open Interpreter利用Code Interpreter实现本地化

作为一个可以在本地环境中运行的工具,Open Interpreter可以访问互联网,没有文件大小和运行时间的限制,并且可以利用任何包或库。去年7月,OpenAI发布了一个强大的插件,名为Code Interpreter(代码解释器),它可以根据用户的自然语言需求生成并执行代码解决方案,帮助完成各种任务,如数据分析、图表创建和文件编辑等。Open Interpreter不仅是一个编码解释器,它还是一个强大的工具,专注于处理复杂任务,将GPT-4代码解释器的强大功能与本地开发环境的灵活性完美结合在一起。

DigitalChina_DCG的博客 1789

20240128 C#与SCPI协议实战:轻量级仪器控制库ScpiNet应用指南

本文详细介绍了轻量级C#库ScpiNet在仪器控制中的应用。相较于传统的NI-VISA,ScpiNet无需安装庞大运行时,通过纯C#实现直接与USB或以太网设备通信,支持跨厂商SCPI仪器。文章提供了从快速连接到实战封装、错误处理的完整指南,帮助开发者构建简洁高效的自动化测试系统。

h9j8k7l6m5n的博客 546

两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = ...

ManonLiu 359

Matlab结果性能评价---rms函数(计算矩阵、数组和向量元素均方根)

实例1:创建一个向量(正弦波)并计算其均方根值 实例2:创建一个二维矩阵并计算其均方根值 实例3:计算二维矩阵沿指定维度的均方根值 本例程配套完整源码下载 均方根(Root-Mean-Square Level): 向量x的均方根值为沿着指定的维度执行求和: 语法描述: y = rms(x)返回输入x的均方根值。如果x是行或列向量,y是实数值标量。对于大小尺寸大于1矩阵x,y包含沿x的第一个数组维度计算的均方根值。例如,如果x是N > 1的N*M矩阵,那么y是1*M行向量,对应x矩..

qq_32809093的博客 3万+

LeetCode第一题:两数之和(Java)

文章目录前言一、题目内容二、解题过程1. 解题思路2. 解题代码三、提交结果总结 前言 坚持下去便可胜利。只要心还在,梦想还在,我们还可以坚持直至胜利。没有过不去的坎,只有害怕的心。莫害怕,抓住希望便可突破困境找到方向! 随着对框架学习的不断深入以及项目经验的不断积累,愈发的意识到掌握基本算法逻辑的必要性,因此决定每天在Leecode上面刷一道算法逻辑题并在此记录。 一、题目内容 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个 整数

世纪末的架构师的博客 2449

开箱即用的Platform IO开发平台(包括Arduino,ESP8266,ESP32,STM32)

开箱即用的 Platform IO 离线开发环境,包含(ESP32,ESP32S2,ESP8266,Arduino,STM32)

qq_19703307的博客 755

运动想象 (MI) 分类学习系列 (19) : EEG-TransNet

本文提出了一种基于注意力机制的卷积神经网络(EEG-TransNet),用于运动想象脑电图(MI-EEG)解码。该方法创新性地通过平均池化和方差池化提取多模态时间信息,并结合自注意力模块捕获长期依赖关系。消融实验表明,方差池化比最大池化更有效(p<0.05),且注意力模块和卷积编码器对特征判别性至关重要。可视化分析验证了该方法能学习到更具判别性的紧凑特征。该工作为MI-EEG解码提供了新的多尺度时间信息融合视角,代码已开源。

走在深度学习前沿的小宋 358

Leetcode 01——两数之和(Java)

一篇博客带你进入leetcode刷题之旅! 本篇采用java解题

Prefectkn的博客 531

8位2路选择器设计

8位2路选择器设计

好好学习,天天向上 4287

力扣刷题_Java版 | 1.两数之和 | 考察哈希表

力扣刷题_Java版: 考察哈希表的三道题

weixin_51104915的博客 708

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【力扣热题100】[Java版]刷题笔记-1. 两数之和

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出target的那整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。

慢慢来的博客 457

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode刷题笔记—(Java版)-----1.两数之和

描述:找到数组中两个数相加和为target的数组下标。 解法1:简单粗暴的方法,嵌套循环数组,返回相加为target的两个数的下标。 class Solution { public int[] twoSum(int[] nums, int target) { for(int i =0;i<nums.length;i++){ //嵌套循环找到相加为target ...

SOARING 306

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

力扣刷题之准备工作

在刷算法题的过程中进行总结是非常重要的,它可以帮助你梳理思路、加深理解、记录学习成果,并提升解题能力。每天回顾:在每天结束时,对当天解决的题目进行回顾。检查解决方案的正确性,并思考是否有更优化的方法。记录下遇到的难点和解决方法,以及学到的新知识点和技巧。整理这些笔记并归档到适当的分类中,以便今后参考。每周汇总:在每周末或开始新一周时进行总结。复习过去一周解决的题目,分析解题过程中使用的算法和数据结构。总结你学到的关键知识点、解题技巧和模式,并将其整理到博客中。

weixin_47040031的博客 9752

力扣第一题:两数之和

JAVA重学刷题旅程欢迎来到我的JAVA学习之旅JAVA学习原因力扣第一题,请听题如何改变文本的样式代码及思路、错误代码思路生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎来到我的JAVA学习之旅 毕竟这是我第一...

Zero_HWA的博客 6695

力扣最热一百题——1.两数之和

力扣最热一百题——两数之和两种解法详解。哈希表的介绍。新手也能学会!!!

WenJGo的博客 2040

【leetcode】Java 力扣第一题(两数之和)简单

废话不多说,直接上干货 Leetcode每日一题 2021/10/18开启,有的人夜里去看海,有的人力扣第一题就做不出来 犹记得那次在刘老师强推下开了力扣的刷题之旅, 用打开力扣APP 第一题,选择简单模式,轻车熟路,啧啧啧 给定一个整数数组nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 这不...

m0_56164356的博客 2627

java算法学习(力扣-两数之和)

java算法刷题学习,以练带学,力扣-两数之和

2301_80210302的博客 2737

力扣刷题---第一题---两数之和

力扣刷题第一题两数之和题目要求解题方法一 题目要求 解题 方法一 遍历数组 当为第一个数的时候,从后面找有没有和他相加得结果的数 如果有就返回下标

代码哈士奇的博客 4497

LeetCode刷题指南

你是否在刷LeetCode的时候不知道怎么正确的提交代码?不管怎样提交都不对,可是在自己的编译器上却是能运行成功并且答案正确,又或是你不知道刷题顺序,一来就倒在了第一题两数之和面前了。看来你和最初的我一样,也遇到了这样的问题,那么可以看看我的这篇文章能否帮助到你,有什么不对的地方敬请大家批评改正。

qq_63215420的博客 1万+

LeetCode(力扣)数组篇 JAVA刷题详解

是不是有许多小伙伴在刷力扣的时候感觉无从下手?从头按顺序开始刷的童鞋们可能会比较有感触,为什么才第四题就感觉很难了?没关系,本文将对力扣的 1-500 题中不需要会员的数据结构与算法题目(数据库与 shell 除外)进行分类,并推荐一个刷题的顺序。完全零基础可以刷题吗?不能,至少要基本掌握一门计算机语言的语法。但现在在网上随便搜一下就能搜到许多关于计算机语言的教程。当然,最好还是上一下正规的课程。刷题顺序很重要吗?重要。按照题目类别结构化地刷题的速度不仅更快,而且可以在刷完一类题之后进行总结。

weixin_61779644的博客 2538

【LeetCode】 LC10001 两数之和(Two Sum),力扣第一题。

本文介绍了解决"两数之和"问题的两种方法及核心知识点。暴力枚举法通过双重循环遍历数组,时间复杂度O(n²),空间复杂度O(1);哈希表法利用空间换时间,存储已遍历元素及其索引,时间复杂度O(n),空间复杂度O(n)。核心知识点包括:数组(随机访问快但大小固定)、哈希表(快速查找)、时间/空间复杂度分析及空间换时间策略。哈希表法更高效,适合数据量大的场景,体现了用额外空间换取时间优化的设计思想。

thinkgame的博客 1315

力扣-1. 两数之和

力扣-1. 两数之和题目描述示例:Java代码 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + ...

Jack魏 590
上一篇: 35K+16 薪的考点、面试题送给明年金三银四的你
下一篇: 【leetcode刷题】2.两数相加——Java版
Java领域指导者
博客等级 码龄7年 404粉丝 265原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值