两数之和问题

更好的阅读体验请点击 两数之和。

题目:两数之和

​ 给定一个整数数组 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 <= 10^4
-10^9 <= nums[i] <= 10^9
-10^9 <= target <= 10^9
只会存在一个有效答案

题目来源:力扣(LeetCode)

解题思路一:

​ 题意很清楚,就是要从一个数组里找到唯一存在的一对数的和为target,并返回他们的下标,很容易就能想到暴力:两层循环分别枚举一遍数组,如果nums[i] + nums[j] == target,就找到了答案,然后将其放入vector中返回即可,时间复杂度O(n^2),勉强能过。

AC代码
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> res;for (int i = 0; i < nums.size(); i ++){for (int j = 0; j < i; j ++){if (nums[i] + nums[j] == target){res.push_back(i), res.push_back(j);break;}}if (res.size() > 1) break;}return res;}
};
解题思路二:

​ 这题比较友好,n的数据范围比较小,但如果n的范围更大,显然是过不了的,故我们需要想一想别的 方法。

​ 这里有一种非常巧妙的方法:哈希表。

​ 我们只需要枚举一次数组,然后在每一次枚举时,我们需要做:

  1. 判断target - nums[i]是否存在哈希表中
  2. 将nums[i]插入哈希表中

​ 然后就能找到答案了。

​ 解释:由于数据只有一组解,假设答案为[i, j](i < j),则当我们循环到j时,nums[i]一定会存在哈希表中,且有nums[i] + nums[j] = target,故一定能找到解。

​ 时间复杂度:只扫描一遍数组,且哈希表的插入和查询操作的复杂度是O(1),故总时间复杂度为O(n)

AC代码
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hash;vector<int> res;for (int i = 0; i < nums.size(); i ++){int another = target - nums[i];if (hash.count(another)){res.push_back(i), res.push_back(hash[another]);return res;}hash[nums[i]] = i;}return res;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MetricBeat监控Redis

目录 一、安装部署 二、开启Redis监控模块 三、编辑Redis配置文件 四、启动Metricbeat 五、查看监控图表 一、安装部署 metriceat的安装部署参考章节&#xff1a; 监控组件>Metricbeat安装使用&#xff0c;这里不再赘述。 二、开启Redis监控模块 进入metricbeat安装目录…

【每日一题】出租车的最大盈利

文章目录 Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;递归记录数组记忆化搜索方法三&#xff1a;动态规划&#xff08;递推&#xff09; 写在最后 Tag 【递归】【记忆化搜索】【动态规划】【数组】【2023-12-08】 题目来源 2008. 出租车的最大盈利 解题思路…

【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

蓝桥杯从零开始备战(Python组)---基础知识篇

第一次尝试报名蓝桥杯的Python组&#xff0c;好好备战&#xff0c;希望省赛可以拿奖&#xff01;目前是整理了一些Python的常用函数和常用内置库&#xff0c;后面可能会开始刷题&#xff0c;如果有比较需要记住的知识点&#xff0c;会再写一篇刷题篇 一、输入输出 1.输入字符…

游戏被攻击怎么办

随着科技的进步和互联网的普及&#xff0c;游戏行业也正在经历前所未有的变革。玩家们不再满足于传统的线下游戏&#xff0c;而是转向了线上游戏。然而&#xff0c;随着游戏的线上化&#xff0c;游戏安全问题也日益凸显。游戏受到攻击是游戏开发者永远的痛点&#xff0c;谈“D“…

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居

HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居 文章目录 HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssist…

【嵌入式开发 Linux 常用命令系列 4.1 -- git push 远程分支与本地分支查看】

文章目录 概述git push 语法步骤1&#xff1a;git 远程主机名查看步骤2&#xff1a;git 远程分支名查看步骤3&#xff1a;git 本地分支名查看示例演示 概述 在日常工作中&#xff0c;将代码 git clone 本地之后&#xff0c;或者使用repo init && repo sync 之后不知道…

SQLserver截取字符串

当我们存的数据是json的时候可以全部取出在模糊查询但是有多个重复数据的时候就没办法准确的模糊出来这个时候我们就需要用的字符串截取 --创建函数create FUNCTION [dbo].[Fmax] (str varchar(50),start VARCHAR(50),length VARCHAR(50)) RETURNS varchar(max) AS BEGINDEC…

商品详情页评论和评论列表评论的排序html代码

以下是一个简单的商品详情页的 HTML 代码示例&#xff1a; <!DOCTYPE html> <html> <head><title>商品详情页</title><style>/* CSS 样式可以在这里添加 */</style> </head> <body><h1>商品详情页</h1><…

7-1 查找书籍

给定n本书的名称和定价&#xff0c;本题要求编写程序&#xff0c;查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n&#xff08;<10&#xff09;&#xff0c;随后给出n本书的信息。每本书在一行中给出书名&#xff0c;即长度不超过30的字…

条码生成器与Zint使用

文章目录 目的条形码zint支持条形码种类下载编译qt pro配置code保存条形码目的 1: 了解条形码数据理论知识 2: 了解zint第三方库相关, 如何编译引用到项目中 条形码 条形码(Barcode)一维码 和二维码(QR code)都是用于存储信息的图形化表示方式,通常应用于商品标识、库…

无头浏览器与Selenium:探索无界爬虫的奇妙世界

selenium设置无头浏览器 背景 ​ 我们之前的selenium都是浏览器驱动自动打开一个网页&#xff0c;执行相关操作&#xff0c;其实也可以让其后台显示&#xff0c;不用在前台显示。 ​ 要设置无头浏览器&#xff0c;可以使用Selenium的Headless模式。在Headless模式下&#xf…

鸿蒙(HarmonyOS)应用开发——web组件

简述 在开发的工作中&#xff0c;可能存在一个场景&#xff0c;我们有一个问卷调查的h5页面&#xff0c;需要切入到app 中。这个时候&#xff0c;就需要从app 端操作&#xff0c;切换到web端操作。不管是安卓、ios、小程序都提供有web组件。那么harmonyos 中也提供web组件来在…

Kafka中的Topic

在Kafka中&#xff0c;Topic是消息的逻辑容器&#xff0c;用于组织和分类消息。本文将深入探讨Kafka Topic的各个方面&#xff0c;包括创建、配置、生产者和消费者&#xff0c;以及一些实际应用中的示例代码。 1. 介绍 在Kafka中&#xff0c;Topic是消息的逻辑通道&#xff0…

【华为数据之道学习笔记】3-2 基础数据治理

基础数据用于对其他数据进行分类&#xff0c;在业界也称作参考数据。基础数据通常是静态的&#xff08;如国家、币种&#xff09;&#xff0c;一般在业务事件发生之前就已经预先定义。它的可选值数量有限&#xff0c;可以用作业务或IT的开关和判断条件。当基础数据的取值发生变…

GSAP动画库,探究苹果官网页面滚动动画是如何实现的

GSAP动画库&#xff0c;探究苹果官网页面滚动动画是如何实现的 前言 每次浏览苹果官网时都在好奇&#xff0c;当我们向下滚动页面时一个个文字或图片总能缓缓浮现&#xff0c;往上滚动时又能慢慢收起来&#xff0c;这就究竟是如是实现的呢。在查阅一些资料时发现了Scrollmagi…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(五)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 上传结果5. 小程序开发1&#xff09;查询图片2&#xff09;查询识别结…

paypal贝宝怎么绑卡支付

一、PayPal是什么 PayPal是一个很多国家地区通用的支付渠道&#xff0c;我们可以把它理解为一项在线服务&#xff0c;相当于美国版的支付宝。你可以通过PayPal进行汇款和收款&#xff0c;相比传统的电汇和西联那类的汇款方式&#xff0c;PayPal更加简单和容易&#xff0c;被很…

利用proteus实现串口助手和arduino Mega 2560的串口通信

本例用到的proteus版本为8.13&#xff0c;ardunio IDE版本为2.2.1&#xff0c;虚拟串口vspd版本为7.2&#xff0c;串口助手SSCOM V5.13.1。软件的下载安装有很多教程&#xff0c;大家可以自行搜索&#xff0c;本文只介绍如何利用这4种软件在proteus中实现arduino Mega 2560的串…

Day45| 爬楼梯 (进阶)Leetcode 322. 零钱兑换 Leetcode 279. 完全平方数

爬楼梯 &#xff08;进阶&#xff09; 题目链接 爬楼梯&#xff08;进阶版&#xff09; 本题目属于排列中的背包问题&#xff0c;所以先遍历背包&#xff0c;后遍历物品&#xff0c;剩下的就是完全背包的板子了&#xff0c;下面直接上代码&#xff1a; #include<iostream…