【leetcode每日两题】-Day1-简单题
2024-08-27 12:51:04
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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
最新文章
- iOS开发-捕获程序崩溃日志
- Java之使用NetworkInterface类获得网络接口信息
- 设置jdk的编码
- android api sdk
- codeforces Hill Number 数位dp
- SessionState详解 session有效期时间:默认20分
- JAVA IO NIO
- autoLayout 纯代码
- Oracle RAC OCR 与健忘症
- Part 33 Difference between abstract classes and interfaces
- verilog 实现加法器
- xhr.readyState就绪状态
- webpack4打包nodejs项目进阶版——多页应用模板
- 全文检索-Elasticsearch (四) elasticsearch.net 客户端
- 如何使用U盘安装macOS high Sierra?
- vue-cli webpack配置 简单分析
- Theorems for existence and uniqueness of variational problem
- 利用Python中的mock库对Python代码进行模拟测试
- AFNetWorking 源码粗浅理解
- WinForm EF+MySql企业管理软件C/S项目实战演练
热门文章
- vs dll lib 使用记录
- Mysql常用sql语句(24)- delete 删除数据
- 记一次在Grafana中使用Worldmap Panel的经历
- 递归实现DropDownList层级
- Scala 基础(十二):Scala 函数式编程(四)高级(二)参数(类型)推断、闭包(closure)、函数柯里化(curry)、控制抽象
- Mysql基础(四):库、表、记录的详细操作、单表查询
- 史上最全的 jmeter 获取 jdbc 数据使用的4种方法——(软件测试Python自动化)
- web测试中不容忽视的细节
- 事件循环 event loop 究竟是什么
- .NET Core ResponseCache【缓存篇(一)】