当前位置: 首页 > news >正文

两数之和(每天刷力扣hot100系列)

目录

题目介绍:

解法1:暴力枚举

解法2:哈希表(散列表)

​​​​​​​
题目介绍:

解法1:暴力枚举

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {if (nums[i] + nums[j] == target) {return {i, j};}}}return {};}
};

时间复杂度:O(N2)

空间复杂度:O(1)

这个就是穷举,没什么好解释的

解法2:哈希表(散列表)

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hashtable;for (int i = 0; i < nums.size(); ++i) {auto it = hashtable.find(target - nums[i]);if (it != hashtable.end()) {return {it->second, i};}hashtable[nums[i]] = i;}return {};}
};

时间复杂度:O(N)

空间复杂度:O(N)

哈希表的原理就是空间换时间,提前创建固有的一定空间,如果空间无限大可以就直接定位到值所在的键,存放索引。由于空间有限,则可以通过取余存放到固定的位置,如果遇到哈希冲突,则顺延,查找的时候也是直接找想要找的值的索引处,取出数组的索引值。哈希桶则类似于链表,哈希冲突的时候就连在原先的索引值后面。(负载因子为存放的数据占总空间的大小,涉及到扩容)。

在这里就是创建一个基于哈希表的键值对容器unordered_map,然后遍历一遍数组,遍历规则是找对应x数的target-x的数值,在创建的哈希表里面找,如果找到了,则返回对应键的数组索引值,找不到则将其索引值根据数值存入对应处,好拿好取。如果没有则返回

http://www.lryc.cn/news/603511.html

相关文章:

  • ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
  • TensorFlow深度学习实战——基于卷积神经网络进行情感分析
  • vue请求golang后端CORS跨域问题深度踩坑
  • 从0到1学PHP(五):PHP 数组:高效存储与处理数据
  • Linux网络管理
  • 万字详解——OSI七层模型:网络通信的完整架构解析
  • 机器学习-十大算法之一线性回归算法
  • Nginx反向代理的网站服务,然后将http重定向到https
  • 无人机图传:让天空视角 “触手可及”
  • .NET 10 中的新增功能系列文章1——运行时中的新增功能
  • 【C#|C++】C#调用C++导出的dll之非托管的方式
  • 百度前端面试题目整理
  • 基于springboot/java/VUE的旅游管理系统/旅游网站的设计与实现
  • 算法提升之数论(矩阵+快速幂)
  • [2025CVPR-图象分类]ProAPO:视觉分类的渐进式自动提示优化
  • B 站搜一搜关键词优化:精准触达用户的流量密码
  • deepseek+飞书多维表格 打造小红书矩阵
  • 线程崩溃是否导致进程崩溃
  • 【CAN总线】STM32 的 CAN 总线通信开发笔记(基于 HAL)
  • 【开源项目】轻量加速利器 HubProxy 自建 Docker、GitHub 下载加速服务
  • 系统改造:一次系统领域拆分的实战复盘
  • 多态示例。
  • kotlin使用mybatis plus lambdaQuery报错
  • XtestRunner一个比较好用好看的生成测试报告的工具
  • 系统间复制文档
  • 论文阅读--射频电源在半导体领域的应用
  • React--》实现 PDF 文件的预览操作
  • 配置daemon.json使得 Docker 容器能够使用服务器GPU【验证成功】
  • VitePress学习笔记
  • 彻底清理ArcGIS 10.2残留的步骤