[LeetCode Easy题快一起刷起来] 1. 两数之和 7. 整数翻转

毕设答辩顺利通过啦~
争取每日两道Easy题,快来一起学习吧~

1. 两数之和

给定一个整数数组 nums 和一个目标值 target,在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

1.1 暴力解法

用两层循环,遍历整个数组:
空间复杂度:O(1),时间复杂度:O(n^2).

    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(i+1,len(nums)):
                if(target==(nums[i]+nums[j])):
                    return [i,j]
        return none

1.2 字典容器法

遍历数组元素,并将 target-nums[i] 及 下标i 存入字典,若 nums[j] 存在于字典中,则返回下标 j 和 其所对应的值。
空间复杂度:O(n) 时间复杂度:O(n)

KeyValue
targt-nums[i]index
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        store={}
        for i in range(len(nums)):
            another=target-nums[i]
            if nums[i] in store:
                return [i,store[nums[i]]]
            else:
                store[another]=i
        return none

2. 整数翻转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
e.g. 123→321 -123→-321 120→21
假设环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

2.1 数学求余解法

思路见代码:采用循环结构取出个位数,每循环一次,sum=sum*10+res
空间复杂度:O(1) 时间复杂度:O(logn)

   def reverse(self, x: int) -> int:
        sum=0
        newx=abs(x)
        while newx!=0:
            res=newx%10
            sum=sum*10+res
            newx=newx//10
        if x>=0:
            if sum <= 2**31-1:
                return sum
            else:
                return 0
        else:
            if -sum >= -2**31:
                return -sum
            else:
                return 0

2.2 Python切片法

将整数转为字符串,进行step为-1的切片,再转为int类型的整数
空间复杂度:O(1) 时间复杂度:O(n)

	def reverse(self, x: int) -> int:    
        if x>=0:
            newx=int(str(x)[::-1])
            if newx<=2**31-1: 
                return newx
            else:
                return 0
        if x<0:
            newx=-int(str(x)[1:][::-1])
            if newx >= -2**31:
                return newx
            else:
                return 0

3. 收获

3.1 Python字典的基本操作

Python 字典 Dictionary

3.2 Python运算符

Python 运算符

需要注意部分运算符与C语言的区别,如幂、除、整除、逻辑运算符:and or not.

3.3 Python切片

Python 切片
Python中符合切片并且常用的有:列表,字符串,元组。
以列表为例:
格式:[开始:结束:步长]
开始:当步长>0时,不写默认0。当步长<0时,不写默认-1
结束:当步长>0时,不写默认列表长度加一。当步长<0时,不写默认负的列表长度减一
步长:默认1,>0 是从左往右走,<0是从右往左走。
包含开始,不包含结束。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值