力扣题解:1.两数之和(Python版)

一、题目描述

给定一个整数数组 nums和一个整数目标值target,请你在该数组中找出和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

这是小赵同学在刷力扣的时候遇到第一个问题,万事开头难,通过查阅资料和看视频终于解决这个问题。对于这个问题,我想出了两种解法:

二、暴力解法

1、具体代码(题解写法)

def twoSum(self, nums: List[int], target: int) -> List[int]:
        result = []
        for i in range(0,len(nums)):
        	for j in range(i+1,len(nums)):
        		sum = nums[i] + nums[j]
        		if sum == target:
        				result.append(i)
        				result.append(j)
        				return result

2、具体代码(完整写法)

a = []
result = [] #存放和为目标值那两个整数的数组下标
nums = list(map(int,input("请输入nums数组:").split()))
a.append(nums)
print(nums)
target = int(input("请输入目标值target:"))

for i in range(0,len(nums)):
    for j in range(i+1,len(nums)):
        if nums[i]+nums[j]==target:
            result.append(i)
            result.append(j)
print(result)

三、哈希表

def twoSum(self, nums: List[int], target: int) -> List[int]:
        HashTable = {} #以字典的形式创建哈希表
        result = []
        for i in range(0,len(nums)):
            HashTable[nums[i]] = i #以nums的元素为键,索引为值
        for j in range(0,len(nums)):
            diff = target - nums[j]
            if diff in HashTable and HashTable[diff] != j:
                result.append(j)
                result.append(HashTable[diff])
                return result

四、总结

以上就是小赵同学对于这一问题的解法,如果代码有看不明白的地方,欢迎来找我交流讨论哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵同学-

非常感谢你!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值