LeetCode-1.两数之和
- 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
编程(python3)
class Solution:
def twoSum(self, nums: list, target):
for i, x in enumerate(nums):
for j, y in enumerate(nums[i+1:], i+1):
if nums[i] + nums[j] == target:
# print(i, j)
return [i, j]
# 无解返回空数组
return []
if __name__ == '__main__':
s = Solution()
# print(s.twoSum([2, 3, 5, 7], 5)) 这行可以直接运行,底下代码实现在控制台输入
# 控制台输入数据
target = int(input("target:"))
a = []
for count in range(5):
a.append(int(input("输入数字:")))
print(s.twoSum(nums=a, target=target))
网上都没有后面的main函数,我这里自己试着写了一下,还是之前在B站看的视频,都忘光了。。。
涉及到的关键知识点
1.列表截取,也可以叫切片。百度搜索吧。这里就不一一讲述了。
(nums[i+1:],
2.enumerate的用法,可以直接返回一个下标和下标对应的数据。开始也是忘了这个函数,死活做不出来。。。。。本来编程能力就非常差,要不然也不会选择考研了。。。。大家一起进步吧。。。。
问题:
官方是java代码,不同编程语言的代码是天壤之别的,所以不会验证他的java代码有没有bug。
但是我的是有问题的,但是可以通过。。
问题就是如果数组是【0,2,3,2,3】,只会返回【1,2】,另一组解【3,4】并不会返回。这个应该在方法里面再建一个数组保存不同解
类似a.append()。但是我没实现。。。。
这个bug我看了看解答区没人写出来,都只是类似上面这种能通过。
若有答案希望大家一起探讨!
本身就是借鉴解答区的。这个暴力算法应该人人都能想到,for循环。就是那个enumerate函数可能会卡住。切片不使用也不影响,只是会导致重复计算,浪费时间。