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

04.两数之和

在这里插入图片描述

✅ 方法一:暴力枚举(时间复杂度 O(n²))

// 暴力法:枚举数组中每一对元素,判断是否满足两数之和为 target
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ans;int size = nums.size();// 外层循环:固定第一个数 nums[i]for (int i = 0; i < size; ++i){// 内层循环:从 i+1 开始,避免重复和自身相加for (int j = i + 1; j < size; ++j){// 如果找到了两个数之和为 targetif (nums[i] + nums[j] == target){ans.push_back(i);  // 添加第一个数的下标ans.push_back(j);  // 添加第二个数的下标return ans;        // 直接返回结果}}}return ans; // 未找到时返回空数组}
};

✅ 方法二:哈希表优化(时间复杂度 O(n))

// 哈希表法:边遍历边查找,利用空间换时间,将查找从 O(n) 降到 O(1)
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> dic; // 键为数值,值为下标for (int i = 0; i < nums.size(); ++i) {int complement = target - nums[i]; // 需要寻找的补数// 如果补数已在哈希表中,直接返回两个下标if (dic.count(complement)) {return {dic[complement], i};}// 否则将当前数及其下标加入哈希表dic[nums[i]] = i;}return {}; // 未找到时返回空数组}
};

📌 总结对比:

方法时间复杂度空间复杂度优点缺点
暴力法O(n²)O(1)简单直接效率低,适合小数据
哈希表法O(n)O(n)高效占用额外空间

http://www.xdnf.cn/news/11885.html

相关文章:

  • 基于STM32F407的情绪感知智能助眠系统
  • 8天Python从入门到精通【itheima】-68(元组)
  • 数据“出国”需办“签证”: 如何申请数据出境安全评估?
  • 《校园生活平台从 0 到 1 的搭建》第一篇:创建项目与构建目录结构
  • 数据库表中「不是 null」的含义
  • Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
  • 项目实战——C语言扫雷游戏
  • 【Spark征服之路-2.1-安装部署Spark(一)】
  • 【Windows开发】Windows 事件跟踪 (ETW)
  • 【conda配置深度学习环境】
  • 机器学习的数学基础:线性模型
  • HDFS分布式存储 zookeeper
  • 【Spec2MP:项目管理之项目成本管理】
  • 字节开源FlowGram:AI时代可视化工作流新利器
  • Promtail采集服务器本地日志存储到Loki
  • 《最长单调子序列》题集
  • 细说C语言将格式化输出到FILE *stream流的函数fprintf、_fprintf_I、fwprintf、_fwprintf_I
  • 轴承排列自动运行 定时器 外中断 PWM部分程序
  • 使用 systemctl 实现程序自启动与自动重启
  • RAG技术解析:实现高精度大语言模型知识增强
  • 【运维实战】Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器!
  • 数据库基础篇
  • 文件解读|检索页(附:新版知网国内刊检索页下载方法!)
  • cv::FileStorage用法
  • 多线程爬虫使用代理IP指南
  • Java面试题及答案整理( 2025年最新版,持续更新...)
  • PARADISE:用于新生儿缺氧缺血性脑病(HIE)疾病识别与分割的个性化和区域适应性方法|文献速递-深度学习医疗AI最新文献
  • GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术
  • Python爬虫之数据提取
  • JavaScript性能优化实战技术