最新要闻
- 《鹿鼎记》主演时隔24年重聚:小宝的四个老婆 她几乎没变
- 《中国奇谭》封神:上线仅三集 追番量破200万
- 红旗正式发布新能源品牌:全新LOGO 新车3秒破百
- 全球消息!AMD锐龙7040砍掉没用的PCIe 5.0!内存翻番256GB
- 全球快看点丨微软Xbox老大斯宾塞盛赞索尼:无障碍手柄是对PS生态很好的补充
- 每日快播:特斯拉的好日子 到头了
- 全球热资讯!马斯克承诺成空谈!推特被裁员工仅获1个月工资补偿
- 中国空间站能量粒子探测器成功安装:自主研发 将开启10年运行
- 世界快报:Steam特别好评!PC策略大作《文明6》打0.9折:入正绝佳时机
- 20万天价酒店被抢光!春节旅游十大热门目的地公布
- 当前讯息:美国能源部出手 阿贡开发出全新锂硫电池:能量密度可达特斯拉4680十倍
- 看热讯:网约车带走3岁孩子妈妈一路狂追 司机委屈:不敢从反光镜看女乘客
- 世界热讯:姚明12岁女儿最新身高曝光 网友:基因太强大!专家科普
- 乘客羽绒服炸开 绒毛飘满地铁车厢:这是为什么呢?
- PC游戏掌机OneXPlayer 2发布:首发6099元起 流畅玩3A大作
- 天天动态:科学家都惊到的减肥药出现了!每周一针 有人减掉近一半体重
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
[1] LeetCode 刷题笔记: 两数之和 [S]
[1] LeetCode 刷题笔记: 两数之和 [S]
目录- [1] LeetCode 刷题笔记: 两数之和 [S]
- 题目描述
- 题解参考
- 暴力枚举
- 复杂度分析
- 使用哈希表
- 复杂度分析
- 暴力枚举
- 参考题解
- C/C++ 的相关参考
- Rust 的相关参考
题目描述
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
(资料图)
你可以按任意顺序返回答案。
题解参考
暴力枚举
最容易想到的方法是枚举数组中的每一个数 x
,寻找数组中是否存在 target - x
。
当我们使用遍历整个数组的方式寻找 target - x
时,需要注意到每一个位于 x
之前的元素都已经和 x
匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在 x
后面的元素中寻找 target - x
。
Algorithm [ 两数之和: 暴力枚举 ]Input: { nums /* array of integers */, target /* integer */ }Output: { the position of two number in array `nums` }-------------------------------/* Given an array of integers numsand an integer target, return indices of the two numbers such that they add up to target. */Function EnumMethod For i <- 0 to nums.length do For j <- i + 1 to nums.length do If target = nums[i] + nums[j] then Return [i, j] EndIf EndFor EndForEndFunction
复杂度分析
时间复杂度:\(O(N^2)\),其中 \(N\) 是数组中的元素数量。最坏情况下数组中任意两个数都要被匹配一次。
空间复杂度:\(O(1)\)。
使用哈希表
注意到方法一的时间复杂度较高的原因是寻找 target - x
的时间复杂度过高。因此,我们需要一种更优秀的方法,能够快速寻找数组中是否存在目标元素。如果存在,我们需要找出它的索引。
使用哈希表,可以将寻找 target - x
的时间复杂度降低到从 \(O(N)\) 降低到 \(O(1)\)。
这样我们创建一个哈希表,对于每一个 x
,我们首先查询哈希表中是否存在 target - x
,然后将 x
插入到哈希表中,即可保证不会让 x
和自己匹配。
Algorithm [ 两数之和: 哈希表 ]Input: { nums /* array of integers */, target /* integer */ }Output: { the position of two number in array `nums` }-------------------------------/* Given an array of integers numsand an integer target, return indices of the two numbers such that they add up to target. */Function HashTableMethod hTable := HashTable::Init() For i <- 0 to nums.length do AnotherFactorPosition = HashTable::find(hTable, target - nums[i]) If AnotherFactorPosition is find then Return [ AnotherFactorPosition, i ] hTable[nums[i]] = i EndFor Return []EndFunction
复杂度分析
时间复杂度:\(O(N)\),其中 \(N\) 是数组中的元素数量。对于每一个元素 \(x\),我们可以 \(O(1)\) 地寻找
target - x
。空间复杂度:\(O(N)\),其中
N
是数组中的元素数量。主要为哈希表的开销。
参考题解
C/C++ 的相关参考
C/C++
的相关的代码
class Solution { struct Hashtable {}; struct Enum {};public: vector twoSumImpl(Enum, vector& 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 {}; } vector twoSumImpl(Hashtable, vector& nums, int target) { unordered_map 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 {}; } vector twoSum(vector& nums, int target) { return twoSumImpl(Hashtable(), nums, target); }};
Rust 的相关参考
Rust
的相关的代码
use std::collections::HashMap;impl HashTable for Solution {}trait Enum { fn two_sum(nums: Vec, target: i32) -> Vec { let (mut ret, nums_size) = ([0i32, 0i32], nums.len()); for i in 0..nums_size { for j in i + 1 .. nums_size { if target == nums[i] + nums[j] { ret[0] = i as i32; ret[1] = j as i32; return ret.to_vec(); } } } vec![] }}trait HashTable { fn two_sum(nums: Vec, target: i32) -> Vec { if nums.len() < 2 { return vec![]; } let mut position = HashMap::new(); for i in 0 .. nums.len() { if position.contains_key(&nums[i]) { return vec![position[&nums[i]] as i32, i as i32] } else { position.insert(target - nums[i], i); } }; vec![] }}
-
Codeforces 1671 F Permutation Counting 题解
题目链接把$p_i>p_{i+1}$的位置个数称为间隔数首先想到一个暴力做法。从小到大挨个添加1-n中的每个数,...
来源: [1] LeetCode 刷题笔记: 两数之和 [S]
expres实现登录与修改密码
《鹿鼎记》主演时隔24年重聚:小宝的四个老婆 她几乎没变
Codeforces 1671 F Permutation Counting 题解
关注:如何优雅地校验后端接口数据,不做前端背锅侠
《中国奇谭》封神:上线仅三集 追番量破200万
红旗正式发布新能源品牌:全新LOGO 新车3秒破百
【环球新视野】学习笔记——Maven的核心概念之仓库、坐标;maven的依赖管理;Maven中统一管理版本号;Maven的继承;Maven的聚合
jmap——Java内存分析工具
全球消息!AMD锐龙7040砍掉没用的PCIe 5.0!内存翻番256GB
全球快看点丨微软Xbox老大斯宾塞盛赞索尼:无障碍手柄是对PS生态很好的补充
环球观热点:1.Maven入门
每日快播:特斯拉的好日子 到头了
全球热资讯!马斯克承诺成空谈!推特被裁员工仅获1个月工资补偿
中国空间站能量粒子探测器成功安装:自主研发 将开启10年运行
世界快报:Steam特别好评!PC策略大作《文明6》打0.9折:入正绝佳时机
20万天价酒店被抢光!春节旅游十大热门目的地公布
当前讯息:美国能源部出手 阿贡开发出全新锂硫电池:能量密度可达特斯拉4680十倍
看热讯:网约车带走3岁孩子妈妈一路狂追 司机委屈:不敢从反光镜看女乘客
精选!C++ TinyWebserver 部署到Linux下,并运行(使用的是Vmware的虚拟机运行Ubuntu20.04)
世界新动态:JavaWeb概述
世界热讯:姚明12岁女儿最新身高曝光 网友:基因太强大!专家科普
乘客羽绒服炸开 绒毛飘满地铁车厢:这是为什么呢?
PC游戏掌机OneXPlayer 2发布:首发6099元起 流畅玩3A大作
Codeforces 1305 F Kuroni and the Punishment 题解 (随机算法)
Python深浅拷贝的理解
今日播报!基于卷积神经网络的人脸表情识别应用--AR川剧变脸(一)
Python中 re.compile 函数的使用
环球快看:学习笔记——在IDEA中创建Maven工程之HelloWord;Maven中常见的问题;Maven核心概念之POM、生命周期、插件和目标
天天动态:科学家都惊到的减肥药出现了!每周一针 有人减掉近一半体重
安全专家发现汽车漏洞 几乎全球所有汽车品牌均中招
仅175克重!夏普发布2K 120Hz头戴显示器
世界球精选!迪士尼玲娜贝儿头部被男子拍打 专家科普:内有钢架 可能造成脑震荡
最新消息:MySQL——锁
【全球新要闻】突破3200万!Steam同时在线再创新高
尹烨:俞敏洪是中国男人应该有的样子 你怎么看?
【天天速看料】女子吐槽小区新能源车主将充电枪提前锁车内 电价便宜再充
迈出国门!国产科幻《流浪地球2》确定将在新西兰等地上映
今日热门!特斯拉降价车主组团维权:维权没结果 又被收了7块停车费
每日视点!简单的24点小游戏
最资讯丨Java Netty框架自建DNS代理服务器教程
天天动态:著名配音艺术家苏秀去世 享年97岁:曾为上影动画《天书奇谭》配音
天天播报:苹果MFi认证 iPhone快充线23.9元:自动匹配iOS版本 不弹窗
手慢真的无了!杰士邦镇店之宝大促:原价169.9元券后19.9
天天快看点丨学习笔记——Maven的基本配置、Maven基本使用、将Maven整合到IDEA中
LeetCode 887. 鸡蛋掉落-题解分析
【当前热闻】男子新买百万奔驰被朋友借走撞烂:保险拒赔!最终结局意外
江西南昌县发生重大交通事故 造成17人死亡22人受伤
【环球新视野】特斯拉车价降至史上最低!才开30公里车主委屈:销售催提车
热讯:java多线程知识点总结
今日热门![Docker] 将容器打包成镜像、镜像分层机制详解
每日视点!成都车主“0元购”引热议 此前还有维权车主要平分特斯拉股权
环球速看:学习笔记——Maven
最资讯丨国产特斯拉大降价后车主维权 能拿到四项补偿?回应来了
电动救生圈亮相CES:时速15公里 续航6公里
《三体》动画播放量破3亿!豆瓣跌破5分 差评率高达83%
环球百事通!8K电视凉了?CES 2023新品少的可怜:销量份额0.15%不忍直视
实时焦点:安卓刷机时代落幕!开源ROM魔趣创始人宣布删库跑路
两款40系新卡RTX 4070/4060 Ti来了:没有最便宜 只有更便宜!
红到冒泡的《鹅鸭杀》 我玩起来是一点兴趣都没有
上次还是旧石器时代!5万年一遇彗星将造访地球:肉眼或可见
最新:使用KVM克隆用于Oracle DB的主机
腾讯推出“游戏锁”功能:再也不怕《王者荣耀》号被盗了
【世界快播报】AMD、NVIDIA显卡越来越贵 Intel成了救星:2000元档唯一新卡
5199元起 红魔8 Pro+明天开卖:无刘海无挖孔 观感明显好于iPhone 14 Pro
焦点速讯:AcWing395. 冗余路径
播报:在linux中通过虚拟机转发流量访问内网
每日热闻!分享2023年最新的15种JavaScript 速记技巧 【终极秘籍】
世界观点:express实现批量删除和分页
天天观点:Docker-Compose容器编排
Linux笔记03: Linux常用命令_3.4文件和目录共用命令
Python+matplotlib实现折线图的美化
当前快讯:vue-router的使用
全球最资讯丨Unity初始界面设计与人物移动代码
学习笔记——书城项目之“我的订单”功能
环球百事通!一些学习编程的优质网站
学习笔记——书城项目第六阶段之去结账功能的准备工作、去结账功能的实现
【环球快播报】“爱妻”来了!理想L7的二排空间有多大?史无前例的“皇后座”感受下
精彩看点:Docker轻量级可视化工具Portainer
热点评![概率论与数理统计]笔记:2.5 随机变量函数的分布
全球简讯:express学会CRUD
当前速递!影像机皇预定!小米13 Ultra堆料惊人:四颗5000万像素主摄
今日报丨B站地区限制破解方法
【环球报资讯】日本60岁宅男看动漫被打断对父母下狠手 啃老30年:网友吐槽二次元危害大
Spring IOC官方文档学习笔记(七)之Bean Definition继承
焦点快报!丙种球蛋白被炒到上万元 真的需要囤一点吗?
20款理想ONE新功能上线:支持3.5kW外放电、配套设备仅2999元
当前快讯:一种inlineHook检测方案
今日快讯:拖死锤子 罗永浩回应遭郑刚炮轰获圈内人士力挺:喜欢乱搞小三关系
国产屏真香!苹果也喜欢:iPhone 15/15 Plus要用京东方屏
一加11砍掉8GB丐版!员工:一加用户都喜欢大内存版本
HTML超文本标记语言1
环球快资讯丨复刻iPhone 14 Pro!乐视手机S1 Pro入网:搭载国产芯 这真不卡
世界速读:Mini LED屏加入高端笔记本阵营!硬刚OLED
环球观焦点:NOI2003 文本编辑器 题解
世界热讯:特斯拉股东要求董事会做好接班准备:以防失去马斯克
全球观察:投资人郑刚炮轰罗永浩拖死了锤子 罗永浩回应:严重失实
能流畅用4年不卡的骁龙8系手机来了!一加11下周首销:3999元
热讯:老雷筹拍《角斗士2》
靳东宋佳主演电视剧《纵有疾风起》热播:moto razr折叠屏抢镜