您的位置:首页 > 编程语言 > C语言/C++

Leetcode_pascals-triangle (updated c++ and python version)

2014-03-22 09:50 417 查看
地址: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 integers    def 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
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: