这道题估计是刷过最多的几道题了吧,第一天,第一题,难度Easy
希望可以坚持
为了增强趣味性,这次换了一种不太熟悉的Python
https://leetcode-cn.com/problems/two-sum/description/
解题思路:
将值和索引值保存起来,在Python里叫字典,Java里叫Map,都是同一回事情。然后在循环的时候,判断目标值减去当前值是否已经在保存的字典里,如果在,那么就可以直接返回。
毕竟是简单难度的题目,特别提到了有且只有一组解,就不用考虑那么多了,直接一次循环就好,时间复杂度O(n)
通过代码:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
keys = {}
for index,item in enumerate(nums):
if target-item in keys:
return [keys[target-item],index]
else:
keys[item] = index
今日收获:
1、从对Python的掌握上,遍历一个列表,可以用enumerate
这个函数,可以同时获取索引和值
2、判断一个值是否在字典中,也是可以直接使用in的,这点刚开始学Python还没有转过来,习惯用get方法,判断是否为None了,写起来就显得有点笨拙
明日计划:
解决了两数之和,明天搞一把三数之和吧
今日结语:
不积跬步,无以至千里。
不要急,一天一天的坚持下来。