leetcode 1.两数之和(C++详细题解)DAY1

文章目录

  • 1.题目描述
    • 示例
    • 提示
  • 2.解答思路
    • (1)暴力解法
    • (2)哈希表
  • 3.实现代码
    • 结果
  • 4.总结

1.题目描述

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例

在这里插入图片描述

提示

  • 2 <= nums.length <= 104
  • 109 <= nums[i] <= 109
  • 109 <= target <= 109
  • 只会存在一个有效答案

2.解答思路

(1)暴力解法

脑海里最直接想到的是循环遍历两遍nums数组
直接判断循环条件符合时,即可返回相应的下标

(2)哈希表

用nums数组初始化哈希表hash
遍历nums数组,在哈希表中查找是否有target-nums[i]的键
查找到了就直接返回,若没查找到,继续遍历。
(因为提示的最后一条:只有一个唯一的答案)

相关代码所需知识
返回值可以使用
return {a,b};//列表list 支持表示返回值,也可以用于hash表初始化

哈希表相关:
unordered_map <int,int> hash;//定义一个无序哈希表
hash[nums[t]] =t ;//用 nums[t] 为键,索引 t 为值(因为find函数查找的是键,所以nums[t]必须放在键的位置,也就决定了不能使用有序哈希表map)
hash.find(a);//在哈希表的键中查找a值。
若查到,则返回相应的下标,若没有查找到,则返回hash.end()
auto it;//auto自动辨别返回值的类型。本题中it表示hash的一整个元素。
it->first 表示的是这个元素的key的值。
it->second 表示的是这个元素的value的值。

3.实现代码

//暴力解法
class Solution
{
public:vector<int> twoSum(vector<int> &nums, int target){int i, j;for ( i = 0; i < nums.size(); ++i){for ( j = i + 1; j < nums.size(); ++j){if (nums[i] + nums[j] == target)return {i, j};}}return {i, j};}
};
// 哈希表
class Solution
{ 
public:vector<int> twoSum(vector<int> &nums, int target){unordered_map<int, int> hash; // 有序哈希表,按键的从小到大排序for (int t = 0; t < nums.size(); ++t){//用nums初始化哈希表hash[nums[t]] =t ;//用nums[t]键,,索引t为值}for (int i = 0; i < nums.size(); ++i){auto p = hash.find(target - nums[i]);//查找的是键if (p != hash.end() && p->second != i)//其中 p->second != i为了保证同一个元素不能出现两次。比如6=3+3,不能返回0,0{ // 找到了对应的元素的键值return {i, p->second};}}return {0, 0};//保证必须有返回值,随便写的两个整数}
};

结果

暴力解法
在这里插入图片描述
哈希表
在这里插入图片描述

4.总结

自己知道是返回两个下标,但不知道该怎么写
return {i, j} ; //这个返回的写法是学来的,
查看题解时发现使用哈希表来查找更加高效,后续学习会补上相关的笔记~


2024.2.5 已经补上哈希表解法的相关代码。

自信,坚持,upup

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

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

相关文章

Mysql MGR搭建

一、架构说明 1.1 架构概述 MGR(单主)VIP架构是一种分布式数据库架构&#xff0c;其中数据库系统采用单主复制模式&#xff0c; 同时引入虚拟IP(VIP)来提高可用性和可扩展性。 这种架构结合了传统主从复制和虚拟IP技术的优势&#xff0c;为数据库系统提供了高可用、 高性能和…

游戏服务器多少钱一台?腾讯云32元,阿里云26元

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;可以选择轻量应用服务器和云服务器&#xff0c;阿腾云atengyu…

OpenCV与机器学习:使用opencv和sklearn实现线性回归

前言 线性回归是一种统计分析方法&#xff0c;用于确定两种或两种以上变量之间相互依赖的定量关系。在统计学中&#xff0c;线性回归利用线性回归方程&#xff08;最小二乘函数&#xff09;对一个或多个自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#…

手把手教你开发Python桌面应用-PyQt6图书管理系统-图书类别信息修改实现

锋哥原创的PyQt6图书管理系统视频教程&#xff1a; PyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~_哔哩哔哩_bilibiliPyQt6图书管理系统视频教程 Python桌面开发 Python入门级项目实战 (无废话版) 火爆连载更新中~共计24条视频&…

怎么加密电脑磁盘?磁盘加密软件哪个好?

磁盘是电脑储存数据的基础工具&#xff0c;可以存放大量数据。为了避免数据泄露&#xff0c;可以使用专业的磁盘加密软件加密保护电脑磁盘。那么&#xff0c;磁盘加密软件哪个好呢&#xff1f;下面我们就来了解一下。 磁盘加锁专家 磁盘加锁专家是一款专业的磁盘加锁软件&…

Anaconda超详细安装教程(Windows环境下)

每个人电脑不同&#xff0c;特别是配置环境变量&#xff0c;不要直接复制粘贴。 &#xff08;本人技术小白一个&#xff0c;如有错误&#xff0c;欢迎各位大神指正。&#xff09; 说明&#xff1a;其实要是装Anaconda的话&#xff0c;就不用再单独装Python了。但是吧&#xf…

UsernamePasswordAutheticationFilter源码解读和实践

UsernamePasswordAuthenticationFilter的目录 一、概述&#xff08;重点&#xff09;二、标红小步骤解读2.1 步骤1&#xff08;标红1&#xff09;2.1.1 AbstractAuthenticationProcessingFilter2.1.2 UsernamePasswordAuthenticationFilter 2.3 步骤2 和 步骤3&#xff08;标红…

【Linux系统 02】Shell脚本

目录 一、Shell概述 二、输入输出 三、分支控制 1. 表达式 2. if 分支 3. case 分支 四、循环控制 1. for 循环 2. while 循环 3. select 循环 五、函数 一、Shell概述 Shell是Linux系统连接用户和操作系统的外壳程序&#xff0c;将用户的输入和请求选择性传递给操…

13 冒泡排序和快速排序

目录 冒泡排序 1.1 基本思想 1.2 特性快速排序 2.1 基本思想  2.1.1 hoare版  2.1.2 挖坑版  2.1.3 前后下标版  2.1.4 循环 2.2 特性 2.3 优化  2.3.1 key值优化 1. 冒泡排序 1.1 基本思想 数据中相邻的两数不断比较&#xff0c;找出最大的数进行交换&#xff0c;不断…

《合成孔径雷达成像算法与实现》Figure6.9

clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; % 距离过采样率 Nrg 320; % 距离线采样数 距离向…

不到1s生成mesh! 高效文生3D框架AToM

论文题目&#xff1a; AToM: Amortized Text-to-Mesh using 2D Diffusion 论文链接&#xff1a; https://arxiv.org/abs/2402.00867 项目主页&#xff1a; AToM: Amortized Text-to-Mesh using 2D Diffusion 随着AIGC的爆火&#xff0c;生成式人工智能在3D领域也实现了非常显著…

【多模态大模型】BLIP-2:低计算视觉-语言预训练大模型

BLIP-2 BLIP 对比 BLIP-2BLIPBLIP-2如何在视觉和语言模型之间实现有效的信息交互&#xff0c;同时降低预训练的计算成本&#xff1f;视觉语言表示学习视觉到语言的生成学习模型架构设计 总结主要问题: 如何在计算效率和资源有限的情况下&#xff0c;有效地结合冻结的图像编码器…