2015-02-10 72 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

這意味着你的程序運行時間過長並被終止。