问题陈述:给定一个整数数组,返回两个数字的索引,使它们相加到特定目标。
您可以假设每个输入只有一个解决方案,并且您可能不会两次使用相同的元素。
我的解决方案(试图比暴力方法更好):
def twoSum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(0,len(nums)):
if (target - nums[i]) in nums.remove(nums[i]): #error
if i != nums.index(target - nums[i]):
return i, nums.index(target - nums[i])
我一直在Line 9: TypeError: argument of type 'NoneType' is not iterable
。
我相信.remove()
会返回一个列表,我正在尝试检查列表中是否有target - nums[i]
。
答案 0 :(得分:1)
remove()
返回None
。试试这个:
def twoSum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(0,len(nums)):
nums.remove(nums[i])
if (target - nums[i]) in nums:
if i != nums.index(target - nums[i]):
return i, nums.index(target - nums[i])
或者,如果您需要维护nums
,请复制并删除:
def twoSum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
for i in range(0,len(nums)):
nums_copy = list(nums)
nums_copy.remove(nums[i])
if (target - nums[i]) in nums_copy:
if i != nums.index(target - nums[i]):
return i, nums.index(target - nums[i])
答案 1 :(得分:0)
a.remove()
不会返回列表。它返回None
>>> a_list = [1, 2]
>>> print(a_list.remove(1))
None
>>> print(a_list)
>>> [2]
由于错误消息建议迭代对象,因此需要一个可迭代的对象。