2015-02-10 45 views
-3

我在本文给出了运行代码的问题:期限超过错误

鉴于整数数组,找到两个数字,使得他们增加了一个具体的目标数字。

函数twoSum应该返回这两个数字的索引,使它们合计到目标,其中index1必须小于index2。请注意,您返回的答案(index1和index2)不是从零开始的。

您可能会认为每个输入都只有一个解决方案。

输入:编号= {2,7,11,15},目标= 9 输出:索引1 = 1,索引2 = 2

我的回答是非常直接的:

class Solution { 
public: 
    vector<int> twoSum(vector<int> &numbers, int target) { 
     vector<int> result; 

     for(int i=0;i<numbers.size()-1;i++){ 
      for(int j=1+i;j<numbers.size();j++){ 
      if (numbers[i]+numbers[j]==target) 
       { result.push_back(i+1); 
        result.push_back(j+1); 
        return result;} 
      } 
     } 
     return result; 
    } 
}; 

通过使用双循环,其复杂性应该是(O ** 2)。但是,我收到了“超出运行时间限制”的错误。请问有什么问题? PS:我知道使用哈希映射的方法可以固定它。我只是混淆了错误。谢谢。

+0

也许他们希望您使用更快的解决方案? – AndyG 2015-02-10 21:57:33

+0

这个问题最可能的情况是有很多测试数据要测试更多的性能解决方案,而且失败了。 – NetVipeC 2015-02-10 22:02:01

+0

我没有看到为这个问题开班的好处。将代码放入'main()'函数或其他函数中。 C++语言并不要求所有的东西都在一个类中。 – 2015-02-10 22:39:23

回答

2

这意味着你的程序运行时间过长并被终止。