地址:http://oj.leetcode.com/problems/pascals-triangle/
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ]
思路:杨辉三角,第m行的数正好是(x+1)的m-1次方的系数。用for模拟注意下标。
参考代码:
class Solution {
public:
vector<vector<int> > generate(int numRows) {
vector<vector<int> >res;
if(numRows)
{
for(int i = 0; i<numRows; ++i)
{
vector<int>vec;
for(int j = 0; j <=i; ++j)
{
if(j==0 || j==i)
{
vec.push_back(1);
}
else
{
vec.push_back(res[i-1].at(j)+res[i-1].at(j-1));
}
}
res.push_back(vec);
}
}
return res;
}
};
//SECOND TRIALclass Solution {public :vector < vector < int > > generate ( int numRows ) {vector < vector < int > > ans ;if ( numRows <= 0 )return ans ;for ( int i = 0 ; i < numRows ; ++ i ){vector < int > vec ( i + 1 , 1 );for ( int j = 0 ; j <= i ; ++ j ){if ( j > 0 && j < i )vec [ j ] = ans [ i - 1 ][ j - 1 ] + ans [ i - 1 ][ j ];}ans . push_back ( vec );}return ans ;}};
python:
class Solution :# @return a list of lists of integersdef generate ( self , numRows ):if numRows <= 0 :return []ans = []for i in range ( 0 , numRows ):vec = [ 1 ] * ( i + 1 )for j in range ( 0 , i + 1 ):if j > 0 and j < i :vec [ j ] = ans [ i - 1 ][ j - 1 ] + ans [ i - 1 ][ j ]ans . append ( vec )return ans