求翻转数循环结构C语言,[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)

Key

Value

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(n)

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字典的基本操作

3.2 Python运算符

Python 运算符

26349d77a7060270a408016e6872d109.png

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

3.3 Python切片

Python 切片

Python中符合切片并且常用的有:列表,字符串,元组。

以列表为例:

格式:[开始:结束:步长]

开始:当步长>0时,不写默认0。当步长<0时,不写默认-1

结束:当步长>0时,不写默认列表长度加一。当步长<0时,不写默认负的列表长度减一

步长:默认1,>0 是从左往右走,<0是从右往左走。

即包含开始,不包含结束。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值