两数之和,反转整数

两数之和:

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()这个函数,用来查看二进制位数的函数,很实用的感觉


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值