哈希专题 - leetcode 1. 两数之和 - 简单难度

leetcode 1. 两数之和

  • leetcode 1. 两数之和 简单难度 哈希
    • 1. 题目详情
      • 1. 原题链接
      • 2. 基础框架
    • 2. 解题思路
      • 1. 题目分析
      • 2. 算法原理
      • 3. 时间复杂度
    • 3. 代码实现
    • 4. 知识与收获

在这里插入图片描述

leetcode 1. 两数之和 简单难度 哈希

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. 原题链接

leetcode 1. 两数之和

2. 基础框架

● Cpp代码框架

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {}
};

2. 解题思路

1. 题目分析

( 1 ) (1) (1) 在数组nums中找到和为target的两个数,并以数组的形式返回其下标。
( 2 ) (2) (2)

2. 算法原理

( 1 ) (1) (1) 首先先到暴力解法,双重for循环外层循环确定一个数nums[i],内层循环从[i+1, n-1]依次确定每一个nums[j],判断nums[i] + nums[j]是否与target相等。等价于找target - nums[j]并判断是否与外层的nums[i]相等。时间复杂度是 O ( n 2 ) O(n^2) O(n2)。如何优化呢?
( 2 ) (2) (2) 暴力算法中,我们内层循环都花在了找target - nums[i]上了,如果把target - nums[i]放入哈希表中,我们 O ( 1 ) O(1) O(1)时间复杂度就可以确定是否找到了target - nums[i]了,即不需要内层循环了。
( 3 ) (3) (3) 对于nums[i],先在哈希表中查找target - nums[i]是否存在:
如果存在就返回对应下标;
如果不存在就把nums[i]放入哈希表中。
( 4 ) (4) (4) 不能先把nums[i]放入哈希表中,再查找target-nums[i],即需要排除自己找自己的情况。

3. 时间复杂度

O ( n ) O(n) O(n)

遍历一遍数组,对于每个元素nums[i],查找哈希表target-nums[i]。如果找到了就返回下标,找不到自身加入哈希表。

3. 代码实现

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hash;for(int i = 0;i < nums.size(); i++){// 对于nums[i],在哈希表中找到了target-nums[i]if(hash.find(target - nums[i]) != hash.end())return {i, hash[target - nums[i]]};// 对于nums[i],在哈希表中找不到target-nums[i],nums[i]插入哈希表hash[nums[i]] = i;}return {-1, -1};}
};

4. 知识与收获

( 1 ) (1) (1) 哈希可以实现 O ( 1 ) O(1) O(1)时间复杂度的查找,效率很高。


T h e The The E n d End End

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

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

相关文章

【贪心算法】 55. 跳跃游戏

55. 跳跃游戏 解题思路 定义变量 n 来存储数组 nums 的长度。初始化 farthest 变量为 0&#xff0c;用于记录当前能够到达的最远距离。使用一个 for 循环遍历数组&#xff0c;但是不包括数组的最后一个元素&#xff0c;因为我们的目标是看是否能到达最后一个位置。在循环内部…

抽奖小程序怎么在线制作_引爆你的营销活动

抽奖小程序&#xff0c;轻松在线制作&#xff0c;引爆你的营销活动&#xff01; 在如今数字化时代&#xff0c;营销方式层出不穷&#xff0c;如何快速吸引用户眼球&#xff0c;提高品牌知名度&#xff0c;成为每个企业关注的焦点。今天&#xff0c;我要向大家介绍一款神奇的工…

用xshell7连接服务器,读取后台日志

有时候前端需要读取一些后台日志&#xff0c;比如&#xff0c;有时候接一些验证码啥的 或者有时候前后端不分离时&#xff0c;前端上线项目 先讲一下怎么用密码方式连接服务器 密码方式连接服务器 第一步&#xff0c;安装xshell&#xff0c;在新建会话中填写主机&#xff0…

Linux 下安装 Git

Linux 下安装 Git 1 参考2 安装2.1 通过 yum方式安装&#xff08;不推荐&#xff09;2.2 通过源码编译安装&#xff08;推荐&#xff09; 3 配置SSH 1 参考 Linux 下安装 Git 2 安装 2.1 通过 yum方式安装&#xff08;不推荐&#xff09; 在Linux上安装git仅需一行命令即可…

11 |「异步任务与多线程」

前言 实践是最好的学习方式&#xff0c;技术也如此。 文章目录 前言一、同步和异步的概念1、同步和异步任务2、线程 二、Android 多线程与 Handler 机制1、分类2、原则3、Handler 机制1&#xff09;问题&#xff08;背景&#xff09;2&#xff09;Handler 异步通信系统3&#x…

重塑生产格局:新质生产力引领下的新型工业操作系统和工业母机创新动向

新质生产力是创新起主导作用&#xff0c;摆脱传统经济增长方式、生产力发展路径&#xff0c;具有高科技、高效能、高质量特征&#xff0c;符合新发展理念的先进生产力质态。 **风口情报&#xff1a;**近日&#xff0c;中央经济工作会议首次提出“发展新质生产力”&#xff1b;…

glob path(python库)

glob 这里有两种方法导入glob mport glob #导入整个glob模块 from glob import golb #从glob模块导入glob函数 三种通配符 *代表0个或多个字符?代表一个字符[]匹配指定范围内的字符&#xff0c;如[0-9]匹配数字 #1、定义一个函数&#xff0c;搜索C盘下的所有文件和目录&…

作业1-32 P1059 [NOIP2006 普及组] 明明的随机数

题目 思路 根据题意&#xff0c;需要将读入的数据排序&#xff0c;去重。 参考代码 #include<bits/stdc.h> using namespace std; int n,a[5000],k;int main() {while(cin>>n){//读入数据for(int i0;i<n;i)cin>>a[i];sort(a,an);//排序int b[5000];in…

牛客 NC244138 剩下的数

链接&#xff1a;https://ac.nowcoder.com/acm/problem/244138 来源&#xff1a;牛客网 题目描述 牛牛有一个由 l … r l…r l…r 共 r − l 1 r−l1 r−l1 个整数组成的环。 牛妹对这个数环进行了 m m m 次询问&#xff0c;每次给定一个整数 x x x 问牛牛操作到不能继续…

python实例

设计者&#xff1a;ISDF工软未来 版本&#xff1a;v1.0 日期&#xff1a;2024/3/7 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_typeself.number_served 0def descri…

深度学习需要掌握哪些数学基础?

《深度学习的数学》这本书再合适不过了。作者罗纳德.T.纽塞尔&#xff08;Ronald T. Kneusel&#xff09;&#xff0c;拥有超过 20年的机器学习行业经验。 本书适合有一定深度学习基础、了解Python编程语言的读者阅读&#xff0c;也可作为用于拓展深度学习理论的参考书。 为什么…

贪心 Leetcode 738 单调递增的数字

单调递增的数字 Leetcode 738 学习记录自代码随想录 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递增 。 示例 1: 输入: n 10 输…

CKA考试必备:解锁Pod封装多容器的高级技巧!

往期精彩文章 : 提升CKA考试胜算&#xff1a;一文带你全面了解RBAC权限控制&#xff01;揭秘高效运维&#xff1a;如何用kubectl top命令实时监控K8s资源使用情况&#xff1f;CKA认证必备&#xff1a;掌握k8s网络策略的关键要点提高CKA认证成功率&#xff0c;CKA真题中的节点维…

Numpy中常用函数np.clip和np.finfo

NumPy&#xff08;Numerical Python&#xff09;是Python科学计算的核心库之一&#xff0c;提供了高性能的多维数组对象&#xff08;ndarray&#xff09;以及用于数组操作的各种函数和工具。 np.finfo finfo函数是根据括号中的类型来获得信息&#xff0c;获得符合这个类型的数…

【MySQL】用户管理 -- 详解

如果我们只能使用 root 用户&#xff0c;这样存在安全隐患。这时就需要使用 MySQL 的用户管理。 一、 用户 1、用户信息 MySQL 中的用户都存储在系统数据库 MySQL 的 user 表中。 字段解释&#xff1a; host&#xff1a;表示这个用户可以从哪个主机登陆&#xff0c;如果…

【三】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

数据库学生选择1122 数据库展示 course表展示 SC表展示 student表展示 数据库学生选课1122_1 第一题 第二题 第三题 第四题 第五题 数据库学生选课1122_2 第六题 第七题 第八题 第九题 第十题 结尾 最后&#xff0c;感谢您阅读我的文章&#xff0c;希望这些内容能够对您有所启…

修改MySQL字段类型 DECIMAL 小数点后面位数

1&#xff0c;下面是修改表字段的SQL语句&#xff1a; ALTER TABLE 表名称 MODIFY 字段名称 DECIMAL(10,5) COMMENT 说明; 2&#xff0c;浮点型: float(255,30): 单精度&#xff0c;总长度是255&#xff0c;小数位是30。 double(255,30):双精度&#xff0c;总长度是255&#…

实践:qemu 运行 linux riscv with AIA(APLICIMSIC)

RISCV架构 Linux AIA支持 目标&#xff1a;在 Qemu 中运行一个支持 riscv aia 的 linux 翻译参考自&#xff1a;https://lwn.net/Articles/963231/ 文章日期&#xff1a;2024年2月22日&#xff0c;星期四&#xff08;截至2024年3月&#xff0c;最新&#xff09; 这个网站里在不…

Spring Boot工程集成验证码生成与验证功能教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

《Vite 报错》ReferenceError: module is not defined in ES module scope

ReferenceError: module is not defined in ES module scope 解决方案 postcss.config.js 要改为 postcss.config.cjs&#xff0c;也就是 .cjs 后缀。 原因解析 下图提示&#xff0c;packages.json 中的属性 type 设置为 module。所有 *.js 文件现在都被解释为 ESM&#xff…