LeetCode第一题:两数之和

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] # 如果存在就返回字典记录索引和当前索引
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值