当前位置: 首页 > 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.dtcms.com/a/305255.html

相关文章:

  • JDK17 新特性跟学梳理
  • Java注解全面解析与应用实战
  • Redis 跨主机连接超时分析:从网络波动到架构优化
  • 关于算法的一些思考
  • 基于springboot的零食商城的设计与实现/零食销售系统的设计与实现
  • 基于Matlab图像处理的静态雨滴去除与质量评估系统
  • JAVA第五学:方法的使用 调试讲解
  • RAG实战指南 Day 26:RAG系统评估指标与方法
  • 2025年06月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • R语言中 read.table 和 read.delim 之间的区别
  • vue中使用wavesurfer.js绘制波形图和频谱图
  • 数学建模算法-day[14]
  • Java中写文件的显示大小实时性
  • 深入理解 boost::lock_guard<boost::mutex>
  • mybatis-plus由mysql改成达梦数据库
  • 【Linux】重生之从零开始学习运维之Mysql事务
  • Python day28
  • 破解企业无公网 IP 难题:可行路径与实现方法?
  • Three.js 渲染优化处理
  • 【C++算法】74.优先级队列_最后一块石头的重量
  • 查找特定的值
  • zama test
  • BGP团体属性
  • Linux部署各类软件
  • 《剑指offer》-算法篇-位运算
  • 【深度学习新浪潮】什么是世界模型?
  • 洛谷 P9779 [HUSTFC 2023] 不定项选择题
  • 记一次导出pdf表单引发的问题
  • Linux救援模式之简介篇
  • 文件相关问题(AI回答)