这是一个关于LeetCode的练习。我得到一个例外
第15行的UnboundLocalError。
为什么?如何修复它?
class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ self.nums = [] self.target = int for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: a = [] return a[i, j]
让我们检查一下您的代码:
第一个场景(没有与目标匹配的组合)
该方法返回一个尚未定义的值:
return a[i, j]
但是a
从未定义过!
第二个场景(组合匹配目标)
该方法返回初始化的值:
a = []
但是,我们从未在索引[i,j]
处设置值,因此这仍然不起作用:
return a[i, j]
解决方案
当您找到与目标相等的组合时,返回它们的索引:
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
self.nums = []
self.target = int
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return i, j
if __name__ == "__main__":
a = Solution()
print a.twoSum([1,2,3,4,5], 5)
也许你可以尝试一下:
if self.nums[i] + self.nums[j] == target:
# ^^^^^ ^^^^^
我相信这会奏效:
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums[i] + nums[j] == target:
return [i,j]
给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 例子: 给定nums=,target=6, 因为=24=6 。 解决方案 上面的代码在其他情况下有效,但在本例中无效。 预期结果 输出 例如,我尝试使用不同的数字数组和不同的目标,即使你改变数字的顺序,它也能工作 例子: 新数组:,目标=9, 输出:。 我不明白这个解决方案出了什么问题,我希望有人能解释一下。谢谢
我想解决以下问题: 给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。 我将下面的数组作为输入-[2,7,11,15],目标为9。 因为nums[0]nums[1]=27=9,所以返回[0,1]。 这是我的密码- 这是解决我问题的正确方法吗?
想改进这个问题吗?更新问题,让它只通过编辑这篇文章来关注一个问题。 给出了一个由N个整数组成的零索引数组A。此数组的平衡指数是任意整数P,因此0≤ P 例如,考虑以下由N = 8个元素组成的数组A: P = 1是这个数组的平衡指数,因为: P=3是该数组的平衡指数,因为: P = 7也是一个均衡指数,因为: 并且没有索引大于7的元素。 P = 8 不是均衡指数,因为它不满足条件 0 ≤ P 现在我
问题内容: 我这周一直在修改python,但我陷入了困境。 如果我有这样的2D列表: 而我做到了 它会回来 但是,我想要列表中第一面的内容的索引,像这样 它会返回 有什么可以做到的吗? 干杯 问题答案: 尝试这个: 用法:
给定两个数组,是否有一种numpy非循环方法来检查数组之间的每个第i个索引是否匹配,即如果a[i]==b[i],是否检查每个i? 我想这已经被问过了,但是我找不到我要找的东西,如果是的话,我很抱歉。
问题内容: 我试图从我的int数组返回两个最大的整数。我能够返回最大和最小的罚款,但无法获得返回两个最大罚款的算法。任何帮助在这里都将不胜感激。 请原谅我的代码中的任何错误。这是一次练习,问题取自去年大学的考试材料。 这是我的代码: 问题答案: 你可以写