《画解算法》1.两数之和【python实现】

🍅 作者主页:不吃西红柿

🍅 简介:CSDN博客专家🏆、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。

🍅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  

 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

 

1.暴力求解

两层循环,外层循环枚举(或称作选中一个标杆),内层循环从枚举值之后开始遍历,计算两数的和是否等于target。如果找到了两个数,那么返回这两个数的下标。

for(int i = 0; i < n - 1; ++i) {for(int j = i + 1; j < n; ++j ) {if nums[i] + nums[j] == target...}
}


暴力求解的算法时间复杂度为指数级,也就是O(n^2)

分析暴力求解,我们发现存在重复搜索的情况,也就是对数组中的部分数据搜索了多次。那如何只对数组中的数据搜索1次(或常数级),然后求解呢?

我们知道,寻找一个数是否存在,最快的方法是通过hash表,在O(1)的时间复杂度之内就可以判断是否存在某个数。

2.哈希表求解
可对数组遍历一次,然后将数据存入hash表,然后再遍历一次数组,查找 target - currentdata 是否存在hash表中,如果存在,那么我们就寻找到了两个数。 题目要求我们返回数组的下标,那么我们的hash表的key是数组元素的值,value是下标。

这种方法在最坏的情况下,对数组遍历了2次,也就是算法的时间复杂度是O(2n),去掉前导系数是O(n),虽然是相比暴力求解,算法的时间复杂度降低了,但是还有优化的空间。

在遍历数组并将数据放入hash表的同时,我们也可以find(target - currentdata)是否存在,如果存在那么就找到了满足条件的两个数。

find(9-4), 存在那返回这两个数的下标,如果不存在,那么将 4 放入hash表。

image.png

 
find(9-6), 存在那返回这两个数的下标,如果不存在,那么将 6 放入hash表。

image.png

 

在遍历到元素5的时候,我们find(9-5),找到了这两个数。

image.png

 


动画演示下这个过程

2021-06-06 222452.gif

 

代码实现

class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hashtable = dict()for i, num in enumerate(nums):# ② map中查找是否有 target - curvalue的数据if target - num in hashtable:return [hashtable[target - num], i]# ① 数组中的每个数放入map中hashtable[nums[i]] = ireturn []

热门专栏推荐:

🥇 大数据集锦专栏:大数据-硬核学习资料 & 面试真题集锦 
🥈 数据仓库专栏:数仓发展史、建设方法论、实战经验、面试真题 
🥉 Python专栏:Python相关黑科技:爬虫、算法、小工具 

(优质好文持续更新中……)✍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业AI时代,大数据云平台未来5年迎最佳发展时机

来源&#xff1a;专知摘要&#xff1a;继德国工业 4.0 的提出&#xff0c;中国也确立了“中国制造 2025”的目标&#xff0c;工业 4.0 及物联网的概念在中国大地上遍地开花&#xff0c;整个行业也是红红火火。从工业大数据到智能制造&#xff0c;工业大数据云平台将为工业创新和…

噪音 - Perlin Noise

转载自&#xff1a;http://www.cnblogs.com/babyrender/archive/2008/10/27/BabyRender.html 说起perlin noise, 最初也就是在课上大概了解了一下, 知道是个生成仿真贴图的东西. 学的时候没怎么细想, 只是知道这个东西很快. 生成3d贴图很方便. 不过最近在做sampling的时候, 发现…

《画解算法》2.整数反转【python-简单】

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd;…

360:中国为什么没有自主研发的浏览器内核?

来源&#xff1a;360公司物联网智库 整理发布摘要&#xff1a;近日360公司发表题为《中国为什么没有自主研发的浏览器内核&#xff1f;》的文章&#xff0c;文章中写道&#xff1a;从0到1&#xff0c;从无到有&#xff0c;这是很多人理解的自主研发&#xff0c;按这个标准&…

❤️ 炒 股 实 战丨原 地 起 飞 ❤️

郑重声明&#xff1a; 1、个人版可以免费获取交易数据进行分析&#xff0c;企业级大规模调用数据需要购买积分&#xff08;大家玩玩即可&#xff09; 2、为避免广告代言&#xff0c;本文将不会出现任何logo、链接和包&#xff0c;需要玩的主页私聊我&#xff01; &#x1f345…

人工智能研究的新前线:生成式对抗网络

林懿伦, 戴星原, 李力, 王晓, 王飞跃来源&#xff1a;科学网 摘要&#xff1a;生成式对抗网络&#xff08;Generative adversarial networks, GAN&#xff09;是当前人工智能学界最为重要的研究热点之一。其突出的生成能力不仅可用于生成各类图像和自然语言数据&#xff0c;还启…

中国自动化学会平行智能专业委员会成立

摘要&#xff1a;2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。2018年8月18日上午&#xff0c;中国自动化学会平行智能专业委员会成立大会在中国科学院自动化研究所报告厅隆重举行。中国科学院院士吴宏鑫教…

2008-2018,5个版本互联网大脑模型的演进与对比

2018年8月&#xff0c;我们绘制的第五个版本的互联网大脑模型图&#xff0c;新的版本相当于为互联网找到了左右大脑的机制-机器智能左大脑和群体智能右大脑。第五版的绘制距离2008年第一个版本正好10年。互联网大脑模型主要是针对1969年以来互联网的网状模型&#xff0c;在21世…

2.安装MySQL

2.安装MySQL Mac系统中安装MySQL 使⽤用Mac中的Homebrew进⾏行行mysql的安装 1.下载安装mysql brew install mysql5.7 如果看到以下界⾯面则表示已经下载安装成功 2.启动mysql mysql.server start 3.关闭mysql mysql.server stop 4.登录mysql mysql -u root -p Windows安…

CNNIC互联网报告:中国网民超8亿 前沿科技进展显著

来源&#xff1a;新浪摘要&#xff1a;8月20日下午消息&#xff0c;中国互联网络信息中心(CNNIC)在京发布第42次《中国互联网络发展状况统计报告》。根据报告&#xff0c;截至2018年6月30日&#xff0c;我国网民规模达8.02亿&#xff0c;普及率为57.7%;手机网民规模达7.88亿&am…

4.MySQL基础操作

4.MySQL基础操作 使用方法: 方式一: 通过在命令行敲命令来操作 ( 有助于命令的掌握)方式二: 通过图型界面工具,如 Navicat 等(在熟练掌握后再使用)方式三:通过编程语言(python,php,java,go...)执行mysql命令 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个…

19个人工智能(AI)热门应用领域,你知道多少?

来源&#xff1a;网络大数据摘要&#xff1a;自然语言生成是人工智能的分支&#xff0c;研究如何将数据转化为文本&#xff0c;用于客户服务、报告生成以及市场概述。01自然语言生成(Natural Language Generation)自然语言生成是人工智能的分支&#xff0c;研究如何将数据转化为…

滴滴重磅发布:KDD2018大会187页人工智能+交通教程

来源&#xff1a;专知摘要&#xff1a;随着深度学习技术的提升&#xff0c;智能交通领域吸引了越来越多研究人员的关注&#xff0c;今天为大家带来滴滴在KDD大会上的最新教程&#xff0c;为大家呈现智能交通领域的最新进展。摘要随着网上约车与自动驾驶技术的快速发展&#xff…

5.一文搞懂MySQL的数据类型

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌简历模板、PPT模板、技术资料尽管【关注】私聊我。 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 历史文章目录&#…

中国机器人产业发展报告(2018)正式发布!

来源&#xff1a;机器人创新生态摘要&#xff1a;2018年8月16日&#xff0c;《中国机器人产业发展报告&#xff08;2018&#xff09;》于2018世界机器人大会主论坛上正式发布&#xff0c;该报告为工信部2016-2018年专项《建立我国机器人团体标准体系与产业信息资源库》的阶段性…

❤️ 给你的Linux把把脉(内存、磁盘、CPU、网络)❤️

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家&#x1f3c6;、信息技术智库公号作者✌。简历模板、职场PPT模板、技术难题交流、面试套路尽管【关注】私聊我。 今日重点&#xff1a; ① 学会查看linux各种状态&#xff0c;包括&a…

团结就是力量,TeamCola浅谈创业团队腾云驾雾的归国征程

记得网上曾流传过这样一句话&#xff1a;“不怕神一样的对手&#xff0c;就怕猪一样的队友”&#xff0c;相信看过的人都会心一笑&#xff0c;明白与优秀的搭档默契地合作有多重要。“你需要信任你伙伴的能力和责任心&#xff0c;而信任的基础则是开放和透明——在一个扁平而高…

知识图谱的前世今生:为什么我们需要知识图谱?

来源&#xff1a;SimmerChan&#xff08;知乎&#xff09;编辑&#xff1a;Debra摘要&#xff1a;本文主要分为三个部分。第一个部分介绍我们为什么需要知识图谱&#xff0c;第二个部分介绍知识图谱的相关概念及其形式化表示。最后&#xff0c;作一个简单的总结&#xff0c;并介…

7.Mysql数据库表引擎与字符集

7.Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果都是&#xff1a;客户端进程向服务器进程发送 一段文本&#xff08;MySQL语句&#xff09;&#xff0c;服务器进程处理后再向客户端进…

大数据+人工智能正以八种方式撼动商界

来源&#xff1a; 数据观摘要&#xff1a;如果你想帮助你的企业实现更多&#xff0c;那么拥抱大数据和人工智能就很有必要了。事实上&#xff0c;那些没能接受这些新兴技术的企业&#xff0c;用不了多久就会逐渐消失在时代发展的长河中。大数据、人工智能正成为技术界的热点&am…