在哈希表中查找一个key的时间复杂度到底是多少?--leetcode 1

本文通过分析leetcode第1题的解法,探讨在哈希表中查找key的时间复杂度问题。从暴力搜索、排序后的二分查找,到使用哈希表实现O(n)时间复杂度的解法。文章重点解释了哈希映射的概念,说明了哈希表查找的时间复杂度为何为O(1)。
摘要由CSDN通过智能技术生成

在哈希表中查找一个key的时间复杂度到底是多少?–leetcode 1

不出意外的话,这应该是我的第一篇博客。

今天下午上课,听的东西完全不进脑子,状态奇差(不过好像很多课我都这样),于是打开几个月没碰的leetcode找找状态,顺便复习一下以前做过的题。没想到才做leetcode 1就发现事情不对劲。闲话少说,先上题。

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两  
个整数,并返回他们的数组下标。你可以假设每个输入只对应一种答案,但是你不能
重复利用这个数组中同样的元素。
实例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回[0, 1]

题目的意思很清晰了,不做解释。而这道题在leetcode上难度是easy。看到这种题,只要当时不是没睡醒,基本上都是能两下子就想到解法的。既然这样,那就要想办法优化算法,尽量降低时间复杂度和空间复杂度,尤其是时间复杂度。而我一拿到这个题的时候,脑子里马上就冒出来暴力搜索。

解法1:暴力搜索

暴力搜索,外层循环遍历一遍数组,内层循环也遍历一遍数组。这样的时间复杂度是O(n^2)。显然,这是不能让人满意的。

解法2:排序后二分查找

将数组排序,然后一层循环遍历一遍数组,对于数组中的每个元素it,在数组中二分查找target - it。排序的时间复杂度是O(n<

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值