LeetCode-1.两数之和(主函数运行)

LeetCode-1.两数之和

  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函数可能会卡住。切片不使用也不影响,只是会导致重复计算,浪费时间。

猜你喜欢

转载自blog.csdn.net/weixin_40557160/article/details/108032983