class类定义参考https://www.runoob.com/python3/python3-class.html
re库https://www.cnblogs.com/xiaokuangnvhai/p/11213308.html
正则表达式:
#使用正则表达式
import re#调用正则表达式的库
num1=re.findall(r'\b\d+\b', '[2 3 4]')#返回列表但是此时的数字以字符串的形式作为列表元素
print(num1)
num=[int(a) for a in re.findall(r'\b\d+\b', '[2 3 4]')]#返回数字列表
print(num)
nums=[int(a) for a in re.findall(r'\b\d+\b', input())]#返回数字列表
print(nums)
1.nums以字符串形式输入
#nums以字符串'[1,2,3]'的形式输入
nums=input()#nums以字符串'[1,2,3]'的形式输入
target =int(input())#target以整数形式读取
class solution:#类定义
def twoSum(self,nums:str,target:int):#nums:字符串,target:整数
import re#调用re正则表达式模块
nums = [int(a) for a in re.findall(r'\b\d+\b', nums)]#利用正则表达式将nums中的数字提取出来并返回数字列表
hashmap={}#创建空字典hashmap
for ind,num in enumerate(nums):#通过循环把nums数组的下标和值分别放入ind和num 值->num 下标->ind
hashmap[num]=ind#放入字典hashmap中 num:ind
for i,num in enumerate(nums):#通过循环把nums数组的下标和值分别放入i和num
j=hashmap.get(target-num)#从字典中找到与(target-num)所得值相等的键,并将其赋给j,若未找到则返回none
if (j is not None) and (i!=j):#如果j不是none并且不等于j
return [i,j]#返回i和j,即返回nums数组中这两个数的下标。
a=solution()
print(a.twoSum(nums,target))
2.#nums以数字列表类型读取,更新两次列表输出[i.j]
#nums以数字列表类型读取,更新两次列表输出[i.j]
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:#输入数字列表nums,整数target;输出数字列表
hashmap={}#创建空列表
for ind,num in enumerate(nums):通过循环把nums数组的下标和值分别放入ind和num
hashmap[num]=ind#更新列表hashmap:num:ind
for i,num in enumerate(nums):#通过循环把nums数组的下标和值分别放入i和num
j=hashmap.get(target-num)#从字典中找到与(target-num)所得值相等的键,并将其赋给j,若未找到则返回none
if j is not None and i!=j:#如果j不是none并且不等于j
return [i,j]
3.#nums以数字列表类型读取,更新一次列表输出[j,i]
#nums以数字列表类型读取,更新一次列表输出[j,i]
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:#输入数字列表nums,整数target;输出数字列表
hashmap={}#创建空列表
for i,num in enumerate(nums):#通过循环把nums数组的下标和值分别放入i和num
hashmap[num]=i
j=hashmap.get(target-num)#从字典中找到与(target-num)所得值相等的键,并将其赋给j,若未找到则返回none
if j is not None and i!=j:#如果j不是none并且不等于j
return [j,i]#!!!这里输出的是[j,i]
4.直接判断目标值是否在字典中
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records = dict()#利用dict()函数创建字典下序更新字典
for idx, val in enumerate(nums):#读取nums数组中的值赋给val,下标赋给idx;同时更新字典records
if target - val not in records:#判断target与val的差是否在字典中
records[val] = idx#不在就更新列表val:idx
else:
return [records[target - val], idx] # 如果存在就返回字典记录索引和当前索引