2015-11-24 38 views
-5

https://leetcode.com/problems/pascals-triangle/楊輝三角|本文給出了錯誤答案

class Solution { 
public: 
    vector<vector<int>> generate(int numRows) { 
     vector<vector<int>> ret; 
     for (int i=0; i<numRows; i++) { 
      vector<int> v; 
      if (i==0) { 
      v.push_back(1); 
      } else { 
       v.push_back(1) ; 
       for (int j=0; j<i; j++) { 
        v.push_back(ret[i-1][j] + ret[i-1][j+1]); 
       } 
      } 
      ret.push_back(v); 
     } 
     return ret; 
    } 
}; 

當我運行自定義測試用例:

Input: 3 
Output: [[1],[1,1],[1,2,1]] 
Expected: [[1],[1,1],[1,2,1]] 

但它不能接受。提交結果是錯誤的答案:

Input: 3 
Output: [[1],[1,32753],[1,32754,36704997]] 
Expected: [[1],[1,1],[1,2,1]] 

有人能告訴我什麼是錯?

+2

通過調試器運行它並**看**發生了什麼。 –

+0

謝謝我重寫我的代碼,它被接受。 –

回答

1

i1會發生什麼情況?

if (i==0) 
{...} 
else 
{ 
    v.push_back(ret[i-1][j] + ret[i-1][j+1]); 
} 

ret[0]中有一個元件,但ret[i-1][j+1]訪問第二元件。它可能正在讀取一些垃圾內存,並將計算關閉。

我會建議與1 S於兩側填充的三角形就像這樣:

1 1 1 
1 1 1 1 
1 1 2 1 1 

這樣的邊緣不初始化內存中讀取。