1. 两数之和

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

class Solution:
#哈希
def twoSum(self, nums: List[int], target: int) -> List[int]: # nums = [2, 7, 11, 15] target = 9
hashmap = {}
for i in range(len(nums)): # i= 0,1,2,3
if (target - nums[i]) in hashmap: # target = 9 target -nums[i] = 7 , 2 , -2 , -6
return [nums.index(target - nums[i]),i]
# 错误:hashmap.get(i) = nums[i] # {0:2,1:7,2:11,3:15}
hashmap[nums[i]] = i

做题思路:

  本题要求我们根据target返回nums中符合条件的索引并放在一个list中,考虑到这里,我们可以考虑哈希表,因为哈希表这种key-value形式可以减小数据查找的时间复杂度,将时间复杂度从两层循环的o(n2)降低为o(n)。代码中

hashmap[nums[i]] = i就是给哈希表中的kay-value赋值。需要注意的是python语言不想java等其他语言需要声明数据类型,所以在python做题当中经常用dict类比hashmap,用list类比queue和stack等等

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

最新文章

  1. iOS开发-捕获程序崩溃日志
  2. Java之使用NetworkInterface类获得网络接口信息
  3. 设置jdk的编码
  4. android api sdk
  5. codeforces Hill Number 数位dp
  6. SessionState详解 session有效期时间:默认20分
  7. JAVA IO NIO
  8. autoLayout 纯代码
  9. Oracle RAC OCR 与健忘症
  10. Part 33 Difference between abstract classes and interfaces
  11. verilog 实现加法器
  12. xhr.readyState就绪状态
  13. webpack4打包nodejs项目进阶版——多页应用模板
  14. 全文检索-Elasticsearch (四) elasticsearch.net 客户端
  15. 如何使用U盘安装macOS high Sierra?
  16. vue-cli webpack配置 简单分析
  17. Theorems for existence and uniqueness of variational problem
  18. 利用Python中的mock库对Python代码进行模拟测试
  19. AFNetWorking 源码粗浅理解
  20. WinForm EF+MySql企业管理软件C/S项目实战演练

热门文章

  1. vs dll lib 使用记录
  2. Mysql常用sql语句(24)- delete 删除数据
  3. 记一次在Grafana中使用Worldmap Panel的经历
  4. 递归实现DropDownList层级
  5. Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象
  6. Mysql基础(四):库、表、记录的详细操作、单表查询
  7. 史上最全的 jmeter 获取 jdbc 数据使用的4种方法——(软件测试Python自动化)
  8. web测试中不容忽视的细节
  9. 事件循环 event loop 究竟是什么
  10. .NET Core ResponseCache【缓存篇(一)】