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

JZ57 和为S的两个数字

评价:

没写出来,看了解析。这是道很有意思的题。

有思路,但时间复杂度O(n^2)超时。

分析:

本题的输入序列元素个数是小于1000000,看到这个你就得知道没法用双重循环了。时间复杂度太高O(n^2)。

本题用到了一个哈希表的特征:查询时间复杂度O(1)-O(n),所以时间复杂度比我的双重循环低

且本题搜索的是两数之和,而不是三数四数,,你可以看看JZ74 和为S的连续正数序列这题就没法用hash了。

所以本题才能用hash表解决问题。

思路:
class Solution {
public:vector<int> FindNumbersWithSum(vector<int> array,int sum) {     // // Step0.特殊情况处理if(array.empty()) return vector<int>{};unordered_map<int, int> hash;   // k-v : array元素-是否出现过// Step1.遍历array,搜索它的和差数是否存在 ? 得到结果 : 将它加入hashfor(int i=0; i<array.size(); i++){if(hash.count(sum - array[i]))return vector<int>{array[i], sum-array[i]};elsehash[array[i]] = 1;}return vector<int>{};}
};

运行时间:36ms 占用内存:5096KB

http://www.dtcms.com/a/336057.html

相关文章:

  • Traefik网关DNS解析超时问题优化
  • Agent开发进阶路线:从基础响应到自主决策的架构演进
  • C++类型转换详解:从C风格到C++风格
  • 如何理解事件循环和JS的异步?
  • LintCode第137-克隆图
  • PostgreSQL导入mimic4
  • SQL详细语法教程(四)约束和多表查询
  • C语言相关简单数据结构:双向链表
  • Rust Async 异步编程(五):执行器和系统 I/O
  • Effective C++ 条款47: 使用traits classes表现类型信息
  • 基于强化学习的柔性机器人控制研究
  • 【大模型微调系列-07】Qwen3全参数微调实战
  • 关于虾的智能养殖系统的开发与实现(LW+源码+讲解+部署)
  • 【LeetCode题解】LeetCode 33. 搜索旋转排序数组
  • 详解flink java基础(一)
  • 嵌入式软件--->任务间通信
  • 【C++知识杂记1】智能指针及其分类
  • 05-实施任务控制
  • open Stack及VM虚拟机和其他平台虚拟机迁移至 VMware vSphere(esxi)虚拟化平台骨灰级后台磁盘替换法迁移方式
  • Maven依赖范围
  • C11期作业18(07.12)
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • Linux——一些常用的其他命令
  • 学习Python中Selenium模块的基本用法(5:程序基本步骤)
  • MySQL数据库备份与恢复
  • 《棒球百科》奥运会取消了棒球·野球1号位
  • 旋钮键盘项目---foc讲解(闭环位置控制)
  • Redis-plus-plus API使用指南:通用操作与数据类型接口介绍
  • TensorFlow|张量流
  • C/C++复习(四)