【力扣TOP100热题图解】T1.两数之和

题目链接点这里—— 力扣(LeetCode)​​​​​​

法一:暴力枚举

最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。

当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位于 x 之前的元素都已经和 x 匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x 后面的元素中寻找 target - x。

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {// 使用两层for循环来遍历数组中的所有可能的两个数的组合for (int i = 0; i < nums.size(); i++) // 外层循环遍历数组的每一个元素for (int j = i + 1; j < nums.size(); j++) { // 内层循环从当前元素的下一个位置开始遍历,避免与自身比较和重复比较if (nums[i] + nums[j] == target) { // 检查当前的两个数的和是否等于目标值return {i, j}; // 如果找到,返回这两个数的索引}}return {}; // 如果没有找到满足条件的两个数,返回空数组}
};

法二:哈希映射(以空间换时间)

我们遍历到数字 a 时,用 target 减去 a,就会得到 b,若 b 存在于哈希表中,我们就可以直接返回结果了。若 b 不存在,那么我们需要将 a 存入哈希表,好让后续遍历的数字使用。有点记忆化数组的意思~

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> h; // 创建一个哈希表,用来存储数组中每个数的值和对应的索引for (int i = 0; i < nums.size(); i++) { // 遍历数组中的每一个元素auto t = h.find(target - nums[i]); // 尝试在哈希表中找到与当前元素的差值相对应的元素if (t != h.end())   // 如果找到了return {t->second, i}; // 返回这两个数的索引,其中t->second是之前存储的索引,i是当前的索引h[nums[i]] = i; // 如果没有找到对应的差值,将当前元素及其索引存入哈希表}return {}; // 如果没有找到任何匹配的元素对,返回一个空数组}
};

算法拆解

 

 

         

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

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

相关文章

【Linux】磁盘管理和文件系统

目录 一、硬盘 1.硬盘结构 2.结构类型 二、MBR与磁盘分区 1.MBR主引导记录 2.磁盘分区结构 三、文件系统类型 四、linux系统添加并使用新硬盘的步骤 1.添加新的硬盘 2.刷新识别 3.进行分区 4.格式化&#xff0c;创建文件系统 5.挂载使用 一、硬盘 1.硬盘结构…

SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

消息中间件 消息消息队列JMS AMQPMQTTKafka Spring整合消息队列模拟消息队列的工作流程Spring整合ActiveMQSpring整合RabbitMQ直连交换机模式主题交换机模式 Spring整合RocketMQSpring整合kafka 消息 消息的发送方&#xff1a;生产者 消息的接收方&#xff1a;消费者 同步消息…

基于SSM项目高校在线请假与审批系统

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 简介 本系统实现了管理员&#xff0c;教师&#xff0c;学生三个模…

OSPF动态路由实验(华为)

思科设备参考&#xff1a;OSPF动态路由实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 OSPF&#xff08;Open Shortest Path First&#xff09;是一种内部网关协议&#xff0c;主要用于在单一自治系统内决策路由。它是一种基于链路状态的路由协议&#xff0c;通过…

探秘ChatGPT:写作论文的新奇技巧

ChatGPT无限次数:点击直达 探秘ChatGPT&#xff1a;写作论文的新奇技巧 近年来&#xff0c;随着人工智能技术的发展&#xff0c;ChatGPT作为一种强大的自然语言处理工具越来越受到关注。在学术界和工业界&#xff0c;人们开始探索如何利用ChatGPT这样的模型来辅助写作&#xf…

Linux下SPI设备驱动实验:实现SPI发送/接收数据的函数

一. 简介 前面文章介绍了SPI设备数据收发处理流程&#xff0c;后面几篇文章实现了SPI设备驱动框架&#xff0c;加入了字符设备驱动框架代码。文章如下&#xff1a; SPI 设备驱动编写流程&#xff1a;SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客 SPI 设备驱动编写…

DevOps(二)Jenkins详细介绍和15天学习计划

Jenkins 是一个开源的自动化服务器&#xff0c;广泛用于持续集成和持续部署&#xff08;CI/CD&#xff09;的自动化过程中。它支持开发者在软件开发的各个阶段自动构建、测试并部署应用程序&#xff0c;从而提高开发效率并减少错误。下面详细介绍Jenkins: 一、核心功能 1、构…

【洛谷 P8802】[蓝桥杯 2022 国 B] 出差 题解(带权无向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

[蓝桥杯 2022 国 B] 出差 题目描述 A \mathrm{A} A 国有 N N N 个城市&#xff0c;编号为 1 … N 1 \ldots N 1…N 小明是编号为 1 1 1 的城市中一家公司的员工&#xff0c;今天突然接到了上级通知需要去编号为 N N N 的城市出差。 由于疫情原因&#xff0c;很多直达的交…

webpack + ts 搭建 web 应用

初始化 npm init -y一、 依赖下载 typescript相关&#xff1a; ts-loader: ts文件加载器 npm i typescript ts-loader -Dwebpack相关 webpack-cli: 命令行工具 webpack-dev-server&#xff1a;webpack开发服务器 webpack-merge : webpack配置合并 clean-webpack-plugin: we…

MXXE利用XXE漏洞快速获取服务器敏感文件工具

https://github.com/MartinxMax/MXXE 关于 MXXEV1.2升级版,快速获取服务器敏感文件 获取Windows服务器敏感文件 把数据包复制到payload.txt进行自动注入 $ python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows 幸运的是我们找到了服务器的私匙 获取Linux服务器敏感…

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】 题目描述&#xff1a;解题思路一&#xff1a;超大数组解题思路二&#xff1a;拉链法解题思路三&#xff1a; 题目描述&#xff1a; 不使用任何内建的哈希表库设计一个哈希映射&#xff08;HashMap&#xff09;。…

数字孪生与企业

数字孪生技术&#xff0c;简而言之&#xff0c;就是创造一个物理实体的数字双胞胎&#xff0c;在虚拟世界中精确模拟现实世界的行为、过程和系统。这种技术的核心在于&#xff0c;它允许我们在数字环境中实时地监控、分析和优化其物理对应物的性能和效率。数字孪生的应用场景极…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

Win 运维 | Windows Server 系统事件日志浅析与日志审计实践

[ 重剑无锋&#xff0c;大巧不工。] 大家好&#xff0c;我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信&#xff1a;WeiyiGeeker 公众号/知识星球&#xff1a;全栈工程师修炼指南 主页博客: 【 https://weiyigeek.top 】- 为者常成&…

mysql 如何查看一条SQL被回滚了

MySQL中查看一条SQL是否被回滚&#xff0c;通常不是一个直接的过程&#xff0c;因为MySQL本身并不提供直接的方式来追踪单个SQL语句的执行和回滚情况。但是&#xff0c;你可以通过一些方法和工具来间接地达到这个目的。下面&#xff0c;我将从多个角度介绍如何分析和判断SQL语句…

OpenCV2之简单处理视频

OpenCV2 https://www.geeksforgeeks.org/opencv-python-tutorial/ 视频采集 import cv2currentframe 0cap cv2.VideoCapture(0)while cap.isOpened():ret, frame cap.read()cv2.imshow(frame, frame)# 隔多少帧保存一张图片if currentframe % 10 0:cv2.imwrite(f{TEMP_PAT…

mysql中的FORCE_MASTER是什么

FORCE_MASTER 解释&#xff1a; FORCE_MASTER 在 MySQL 中并不是一个标准的 SQL 关键字或系统变量&#xff0c;而是作为一种查询优化器提示&#xff08;query hint&#xff09;的非正式用法&#xff0c;用来指示 MySQL 引擎强制在主数据库上执行特定的查询。这种用法通常是作为…

Go语言使用标准库时常见错误

Go的标准库是一组增加和拓展语言的核心包。然而,很容易误用标准库,或者我们对其行为理解有限,导致产生了bug或不应该在生产级应用程序中某些功能。 1. 提供错误的持续时间 标准库提供了获取 time.Duration 的常用函数和方法,但由于 time.Duration 是 int64 的自定义类型,…

leetcode代码记录(Z 字形变换

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a;…

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出&#xff0c;包含如下功能&#xff1a; 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制&#xff0c;超过则自动分文件&#xf…