欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据结构算法(两数之和、整数反转)

程序员文章站 2024-01-19 09:44:40
文章目录Leetcode刷题Day11.两数之和Leetcode刷题Day11.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: hashmap = {}...



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