pascal’s triangle

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]
]

代码一(3ms):

class Solution {

    unsigned long long
    choose(unsigned long long n, unsigned long long k) {
        if (k > n) {
            return 0;
        }
        unsigned long long r = 1;
        for (unsigned long long d = 1; d <= k; ++d) {
            r *= n--;
            r /= d;
        }
        return r;
    }

public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int>> v;

        for (int i = 1; i <= numRows; i++) {
            vector<int> vv;
            for (int j = 1; j <= i; j++) {
                vv.push_back(choose(i-1, j-1));
            }
            v.push_back(vv);
        }

        return v;
    }
};