数据结构算法(两数之和、整数反转)
Leetcode刷题Day1-Python
1.两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
题解代码:
class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: hashmap = {} for index,num in enumerate(nums): if target - num in hashmap: return [hashmap[target-num],index] hashmap[num] = index
解题思路:
1.字典性质
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
实例:
>>>dict = {'IGTOP':'theshy','IGMID':'Rookie','IGJUG':'Ning'} >>>print(dict['IGTOP']) theshy
2.内置函数 enumerate()
enumerate是Python的一个内置函数。你应该充分利用它通过循环迭代自动生成的索引变量。
>>>nums = [2,7,11,15] >>>list(enumerate(nums)) [(0,2),(1,7),(2,11),(3,15)]
对于输入 list()中的每个 enumerate()迭代器元素,迭代器会返回一个形式为 (index,element)
的元组作为list的元素。在典型的for-in循环中,你可以利用Python的数据结构解包功能来充分利用这一点特性:
for index,element in enumerate(nums): #...
索引值默认从0开始,但也可以将其设置为任何整数。
>>>nums = [2,7,11,15] >>>list(enumerate(nums,1)) [(1,2),(2,7),(3,11),(4,15)]
在上面的例子中,我将函数调用改为 enumerate(names, 1)
,后面的参数1就是本次循环的起始索引,替换默认的0.
2.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题解代码:
class Solution: def reverse(self, x: int) -> int: strr = str(abs(x)) strr = strr[::-1] if x < 0: strr = '-'+strr
x = int(strr) if x<-2**31 or x>2**31-1: return 0 else: return x
解题思路:
1.去符号后字符串切片翻转
去符号,用内置函数abs()
strr = str(abs(x))
类型转换后进行切片翻转操作:
strr = strr[::-1]
2.判数值符号
if x < 0: strr = '-'+strr
3.判溢出
x = int(strr) if x<-2**31 or x>2**31-1: return 0 else: return x
本文地址:https://blog.csdn.net/m0_49972043/article/details/108237192