gpt4 book ai didi

Python Two Sum - 蛮力法

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:09 25 4
gpt4 key购买 nike

我是 Python 的新手,刚开始尝试使用 LeetCode 来构建我的印章。在这个经典问题上,我的代码遗漏了一个测试用例。

问题如下:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].

我错过了目标编号为 6 的测试用例 [3,2,4],它应该返回 [1,2] 的索引,但命中了目标编号为 [1,5,7] 的测试用例6 个(当然会返回索引 [0,1]),所以我的 while 循环似乎出了点问题,但我不太确定是什么。

class Solution:
def twoSum(self, nums, target):
x = 0
y = len(nums) - 1
while x < y:
if nums[x] + nums[y] == target:
return (x, y)
if nums[x] + nums[y] < target:
x += 1
else:
y -= 1
self.x = x
self.y = y
self.array = array
return None

test_case = Solution()
array = [1, 5, 7]
print(test_case.twoSum(array, 6))

在目标为 6 的测试用例 [3,2,4] 上,输出返回 null,因此索引 1 和 2 甚至都没有被汇总,我可能分配错了 y 吗?

最佳答案

一个蛮力解决方案是在列表上双重嵌套一个循环,其中内部循环只查看比外部循环当前所在的索引更大的索引。

class Solution:
def twoSum(self, nums, target):
for i, a in enumerate(nums, start=0):
for j, b in enumerate(nums[i+1:], start=0):
if a+b==target:
return [i, j+i+1]

test_case = Solution()
array = [3, 2, 4]
print(test_case.twoSum(array, 6))

array = [1, 5, 7]
print(test_case.twoSum(array, 6))

array = [2, 7, 11, 15]
print(test_case.twoSum(array, 9))

输出:

[1, 2]
[0, 1]
[0, 1]

关于Python Two Sum - 蛮力法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54016366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com