【发布时间】:2015-05-04 00:40:53
【问题描述】:
我正在尝试做一个 LeetCode 问题:
给定一个整数数组,找出两个数之和 一个特定的目标编号。
函数 twoSum 应该返回两个数字的索引,使得 它们加起来就是目标,其中 index1 必须小于 index2。 请注意,您返回的答案(index1 和 index2)是 不是从零开始的。
您可以假设每个输入都只有一个解决方案。
输入:numbers={2, 7, 11, 15}, target=9 输出:index1=1, index2=2
第一次尝试是使用两个 for 循环,这给了我 O(n^2),不幸的是它没有通过。因此我尝试使用:
target - current = index
并搜索该索引是否存在于字典中。
这是我的代码:
class Solution:
def twoSum(self, nums, target):
dic = {}
#A number can appear twice inside the same index, so I use a list
for i in xrange(0, len(nums)):
try:
dic[nums[i]].append(i)
except:
dic[nums[i]] = []
dic[nums[i]].append(i)
try:
for items_1 in dic[nums[i]]:
for items_2 in dic[target-nums[i]]:
if(items_1+1 != items_2+1):
l = []
if(items_2+1 > items_1+1):
l.append(items_1+1)
l.append(items_2+1)
else:
l.append(items_2+1)
l.append(items_1+1)
return l
except:
pass
我在本地开发了这个,我能够通过 LeetCode 抱怨的测试用例之一得到正确的结果:[-3,4,3,90], 0
我得到的输出是 [1, 3],但是在 LeetCode 上它返回 null,有人知道为什么会这样吗?
【问题讨论】:
-
一个数字在 nums 列表中出现两次真的很重要吗?重要的是你得到 a 索引,对吗?
-
嗯...如果数字是 [0, 3, 4, 0],那么正确的值应该是第 1 和第 4 个索引。但是,由于 0 索引已经在第 1 个索引处,所以会发生第 4 个索引不在字典中。
-
你想让我告诉你我会怎么写吗?
-
你为什么要上课?该类只包含一个方法。为什么不删除类定义行并将方法保留为独立函数?
-
类需要提交答案,在我本地开发中,我没有包含类。
标签: python