LeetCode 001:两数之和

LeetCode 两数之和C语言源码 //给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 //你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用 //示例: //给定 nums = [2, 7, 11, 15], target = 9 //因为 nums[0] + nums[1] = 2 + 7 = 9 //所以返回 [0, 1] 立即下载

题目:

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中的元素。

示例:

给定 nums = [2,7,11,15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0,1]

作为Leetcode上的第一题,这道题的提交次数达到了60多万,通过率也达到了45%以上,是一道不折不扣的简单题。
思路:
首先把题目用数学公式表达出来:target = x + y,其中x和y是数组中的元素。由于target是输入量,是已知的,当我们确定了x的时候y也就确定了(y = target - x)。所以我们可以遍历nums中的元素nums[i],然后判断target - nums[i]是否在数组中即可。
解法一:
这种解法就是直白的把上面的解题思路用代码表示出来了:
1、创建一个HashMap
2、把nums中的每一个元素加入到map中去,key为num[i],value为i
3、循环遍历nums[i],从判断map中是否存在target - num[i],如果存在就是我们要找的值。

public int[] solution1(int[] nums, int target){
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(8);
    int[] res = new int[]{-1, -1};
    for (int i = 0; i < nums.length; ++i) {
        map.put(nums[i], i);
    }
    for (int i = 0; i < nums.length; ++i) {
        int t = target - nums[i];
        if (map.containsKey(t) && map.get(t) != i) {
            res[0] = i;
            res[1] = map.get(t);
            break;
        }
    }
    return res;
}

解法二:
这种解法本质上和上面的差不多,只是把两次循环换成了一次循环。在循环时先判断map中是否存在target - nums[i],如果存在就表明找到想要的数据了,如果不存在就把nums[i]添加到map中去。

public int[] solution2(int[] nums, int target){
    HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(8);
    int[] res = new int[]{-1,-1};
    for (int i = 0; i < nums.length; ++i) {
        if (map.containsKey(target - nums[i])) {
            res[0] = i;
            res[1] = map.get(target - nums[i]);
            break;
        }
        map.put(nums[i], i);
    }
    return res;
}

更多LeetCode文章:
https://github.com/ybjx/Leetcode

遗留问题:

上面的两种实现方法都使用了HashMap,并且把nums[i]作为key存放加入到map中去,从题目中我们发现,并没有说nums中的值不能重复。那么如果出现了重复的值会如何呢?上面的解法还能正常工作吗?

扫码关注
头条号:  微信公众号:

题——两数之和 题目:两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 来源:力扣(LeetCode) 解答 过程 使用for循环以及if语句找到数组中所需的两个数字,输出,结束。 使用C++进行编程。 输出时,使用cout,编码错误。错误原因:使用cout需要构造函数,不需要返回值。而,这道题已给普通函数vector,返 立即下载

相关推荐

OFDM调制matlab仿真详细代码

MATLAB仿真代码 % ================================================== % 作者: 肆拾伍 % 时间:11/30 2019 % 版本:V3 % =================OFDM仿真参数说明:================ % % 子载波数 carrier_count ---200 % 总符号数 symbol_count ...

肆拾伍的博客 3万+

C语言实现求两个数的和

两数求和是C语言中初学时期的较为基础的简单的一段代码,只需要建立数据,用输入函数scanf获取数据,然后建立求和代数式,最后用输出函数printf输出数据就可以了。具体代码如下: #include <stdio.h> int main() { //输入数据 int num1 = 0; int num2 = 0; //获取数据 scanf("%d%d", &num1, &num2); //建立求和代数式 int sum = num1 + num2; //输出数据.

m0_69031880的博客 2万+

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 169

两个数字相加的代码

两个整数之和的代码

m0_72901410的博客 4936

USRP B210 运行gnuradio时 FPGA固件版本冲突错误解决方法

事情起源于昨天拿到USRP后开始调试,结果整了一个下午都没解决这个问题。 昨天晚上自己思考了一下,觉得还是版本问题。 首先,uhd_find_devices和uhd_usrp_probe均可以正常运行,没有报错,固件正常加载,序列号也可看到。 teray@teray-X550JK:~$ uhd_find_devices [INFO] [UHD] linux; GNU C++ version 7.5...

斯哈研究所 4243

DeepSeek Harness接入QQ实战:把DSH变成赛博群友

大模型应用正从单机问答走向多平台集成,如何将模型能力嵌入即时通讯工具成为工程实践的热点。消息接入、会话管理、插件扩展是构建智能群聊机器人的核心三要素。DeepSeek Harness(DSH)作为一款模型会话工作流管理工具,凭借多会话管理、模型调用编排以及灵活的插件机制,能够在QQ群聊场景中实现“接收消息→模型生成→回复推送”的完整闭环。本文从基础概念切入,详解DSH接入QQ的两种实现路线——外部API转发与原生插件适配,覆盖环境准备、启动调试、接口调用与性能观察,并给出常见问题排查清单。无论是本地AI助理

weixin_27427619的博客 1932

LeetCode1-(两数之和、两数相加)

LeetCode常人解题,详细解题技巧和算法请参照官网

jsage的博客 447

GD32F130之USART多机通信

简介 在多机通信中,一个从机应该只接收它需要接收的数据,且只应该在它需要接收数据时才检测串口。而始终接收RX线上的数据对从机来说是一种负担。 多机通信硬件设计 远距离方案:RS485 板级方案: 静默模式 静默模式有什么作用? 答:如果 USART 处于静默模式,所有的接收状态标志位将不会被置位。 如何进入静默模式? 答:软件可以通过将 USART_CMD 寄存器中MMCMD 位置 1 使 USART 进入静默模式。 如何从静默模式中唤醒? 答:有两种方式可选,①检测到总线

luliplus的博客 299

讲解LeetCode第1题:两数之和(完整代码)

输入:nums={2,7,11,15} , target=22输出:1,3解释:因为num[1]+num[3]==22 , 所以返回1,3。

序属秋秋秋的博客 3246

EtherCAT总线运动控制学习笔记(RXXW_Dor)

说到总线控制,就要说到报文、对象字典、PN通信我们大部分会说报文,EtherCAT通信我们常说对象字典,叫法不一样,但是原理基本一致,下面我们简单认识下上面是对象字典。

RXXW_Dor的博客 5429

SOC、SOH、OCV

1)放电实验法的测量SOH结果最为准确,但是深度放电会对影响电池的寿命;2)电阻折算法仅将电阻作为评价SOH的依据,但电池老化时电阻的变化范围较小,因此该方法的误差较大;3)电阻折算法需要对电池进行大量的实验,绘制成Map图,但是该方法有一定的局限性,针对不同的电池需要绘制不同的Map图;4)阻抗分析法是目前最为前沿的方法,可以根据阻抗谱较为直观的分析SOH的变化,但是该方法需要的成本较高,每台设备约为5万美元。

m0_61973119的博客 2万+

两数之和

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

德尔塔菜鸟日记 167

2.0 电子凸轮 西门子1500电子凸轮使用研究1

本文研究了S7-1500T电子凸轮同步控制技术,通过仿真实验得出以下结论:1)通过比例系数可调整凸轮曲线形状;2)解除同步需调用从轴其他运动指令;3)详细阐述了凸轮同步的5个实施步骤。重点分析了三种同步类型(主值距离同步、动态参数同步和直接同步)的特点及应用场景,并探讨了缩放系数、偏移量等参数对凸轮曲线的影响。同时介绍了凸轮应用模式及常见异常处理方法,为工程应用提供了重要参考。

qq_34047402的博客 809

Leetcode题解001:两数之和

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

qq_43645173的博客 407

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

力扣001:两数之和

类型注解是 Python 3 中的一项新功能,它允许程序员在函数声明中指定函数参数和返回值的类型,提高代码的可读性和可维护性。-> 是 Python 3 中的类型注解符号,它用于指定函数的参数和返回值的类型。在这个函数中,它表示函数 twoSum 的返回值是一个 List[int] 类型。函数返回一个包含两个元素的整数列表,这两个元素是找到的两个数字的下标,它们的和等于目标值。因为创建了一个新的字典,就可以把以及遍历和为遍历的分成两部分,因此可以只遍历一次,整数,并返回它们的数组下标。

qq_51438689的博客 163

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

力扣Python001:两数之和

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

流小卜的博客 462

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LeetCode001:两数之和

一、写在前面 初衷 想刷leetcode也不是一两天的事情了,之前也有很多人给过建议,于是乎,就给安排上了,一来算法的确是很重要的一块,需要好好学,为了提升自己,再者,这也可以作为微信推文的一块,给大家分享,当然,最重要的是这个过程中会结交到很多志趣相投,有想法的朋友。 我们 目前我已经集结了7位研究生学长学姐(各个大学),一个月内不会加人,大家可以加我微信(zs820553471),进学习交流...

简说Python的博客 2427

LeetCode题解001:两数之和

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

dhsdh56756的专栏 227

LeetCode001:两数之和

给定一个整数数组 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 =

46426906的博客 116

力扣001:两数之和(c#)

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。:第一次刷力扣难度不是太高,不过如果之前没练过短时间内写完这一题也是蛮难的。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。

wqdtbs的博客 264

LeetCode:001两数之和

001:两数之和给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]答案:方法一:自己写的方法。暴力法。时间复杂度:O(n^2)    空间复杂度:O(1)class...

LYROOO的博客 320

前端向:LeetCode 001两数之和-简单

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 我的代码 var t

suisui0725的博客 171

leetcode-001:两数之和

goto 跳出多轮循环

一得同学 182

LeetCode 001:两数之和

两数之和

m0_64694079的博客 314

LeetCode:001.两数之和

int* twoSum(int* nums, int numsSize, int target, int* returnSize){ //使用暴力破解 int *p=(int*)malloc(sizeof(int)*2); for(int i=0;i<numsSize-1;i++) { for(int j=i+1;j<numsSize;j...

dosdiosas_的博客 154
上一篇: LeetCode 002:两数相加
下一篇: LeetCode 003:无重复字符的最长子串
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值