118. Pascal's Triangle

118. Pascal’s 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]
]

Analysis:
高中时期学过的杨辉三角。
这篇文章性质介绍的很好,就不赘述了:《Pascal’s Triangle leetcode java(杨辉三角)》http://www.cnblogs.com/springfor/p/3887910.html
主要就是用到其第5条性质了,观察规律也可以观察出来。
Source Code(C++):

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

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


int main() {
    Solution sol;
    vector<vector<int> > v;
    v = sol.generate(5);
    for (int i=0; i<v.size(); i++) {
        for (int j=0; j<v[i].size(); j++) {
            cout << v[i][j] << ' ';
        }
        cout << endl;
    }
    return 0;
}

你可能感兴趣的:(118. Pascal's Triangle)