【LeetCode】118 & 119 - Pascal's Triangle & Pascal's Triangle II

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

Solution: 

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

 

119 - Pascal's Triangle II

Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,
Return [1,3,3,1].

Note:
Could you optimize your algorithm to use only O(k) extra space?

Solution:

class Solution {
public:
    vector<int> getRow(int rowIndex) {
        vector<int> vec(1,1);
        vector<vector<int>> ret;    
        ret.push_back(vec);
        int i=1;
        while(i<=rowIndex){
            vec.clear();
            vec.push_back(1);
            for(int j=1;j<ret[i-1].size();j++){
                vec.push_back(ret[i-1][j-1]+ret[i-1][j]);
            }
            vec.push_back(1);
            ret.push_back(vec);
            i++;
        }
        return vec;  //or return ret[rowIndex];
    }
};

 

posted @ 2015-08-10 21:09  irun  阅读(163)  评论(0编辑  收藏  举报