两数之和:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
dict = {}
for i in range(len(nums)):
x = nums[i]
if dict.__contains__(target-x):
return [dict[target-x], i]
dict[x] = i
题后感:
最开始我用两个循环用相加的形式做题,结果超过时间限制,看了一下网上别人的代码,才恍然大悟,原来可以做减法啊,只需要将循环过的数字和索引放进字典中,相加后的结果数字减去当前循环到的数字,得到相减后的数字,再去字段中找有没有,如果有就直接返回,没有就继续循环,这样只需一个循环就可以,而且之前我是用 in 判断是否存在字典中,发现有人用__contains__,这个函数作用类似 in ,一个可迭代对象是否包含某个对象,好像执行速度快了点,然后我去python中看一下,发现可迭代的对象都有这个内置函数,很实用的感觉
反转整数
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x>=0:
xx = 1
else:
xx = -1
num = int(str(abs(x))[::-1]) * xx
return num if num.bit_length()<32 else 0
题后感:
这题的思路一开始我也是用绝对值,字符串反转形式,只是在判断32位限制的时候,我用了2**31-1,-2**31,看了别人代码发现了bit_length()这个函数,用来查看二进制位数的函数,很实用的感觉