博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode力扣刷题系列python——1、两数之和
阅读量:4693 次
发布时间:2019-06-09

本文共 1012 字,大约阅读时间需要 3 分钟。

题目:

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

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

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

 

解法:

1、暴力法

两次循环,遍历数组得到nums[ j ] = target - nums[ i ],此方法时间复杂度为O(n^2),在官方测试数据下时间会超标(我连跑了四次时间都超了,遂放弃此法)

1 class Solution:2     def twoSum(self, nums: List[int], target: int) -> List[int]:3         for i in range(len(nums)):4             for j in range(len(nums)):5                 if j > i:6                     if nums[j] == target - nums[i]:7                         return i,j

 

2、借助字典实现

可以借用哈希(python叫字典),我们遍历元素的时候,且记录元素的下标,当我们找target-a时候,只需要在字典找,就可以了,查找字典时间复杂度为O(1)

所以,,时间复杂度:O(n),空间复杂度:O(n)

1 class Solution:2     def twoSum(self, nums, target):3         n = len(nums)4         lookup = {}5         for i in range(n):6             tmp = target - nums[i]7             if tmp in lookup:8                 return [lookup[tmp], i]9             lookup[nums[i]] = i

 

转载于:https://www.cnblogs.com/zhangxingcomeon/p/11133570.html

你可能感兴趣的文章
python with语句中的变量有作用域吗?
查看>>
24@Servlet_day03
查看>>
初级ant的学习
查看>>
redis数据结构--String
查看>>
memcached 细究(三)
查看>>
使用svn——项目的目录布局
查看>>
RSA System.Security.Cryptography.CryptographicException
查看>>
webservice整合spring cxf
查看>>
[解题报告] 100 - The 3n + 1 problem
查看>>
Entity Framework 学习高级篇1—改善EF代码的方法(上)
查看>>
Mybatis逆向工程配置文件详细介绍(转)
查看>>
String类的深入学习与理解
查看>>
不把DB放进容器的理由
查看>>
OnePage收集
查看>>
Java parseInt()方法
查看>>
yahoo的30条优化规则
查看>>
[CCF2015.09]题解
查看>>
[NYIST15]括号匹配(二)(区间dp)
查看>>
json_value.cpp : fatal error C1083: 无法打开编译器生成的文件:No such file or directory
查看>>
洛谷 P1101 单词方阵
查看>>