LeetCode 之 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]
]
这个题比较简单,杨辉三角么,利用队列直接解决,这里是用vector那么:

1 用两个vector分别保存当前处理的这一行now,和上一行last

2 now 除了第一个和最后一个元素是1外,其余的都等于上面两个元素的和,只要注意不要越界就可以了

代码:

class Solution {
public:
    vector<vector<int> > generate(int numRows) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        
        
        vector<vector<int> >result;
        
        //为0返回空的vector<vector<int>>类型
        if(numRows==0) return result;
        
        //先添加第一行
        vector<int> first;
        first.push_back(1);
        result.push_back(first);
        
        vector<int> last ;
        //用last保存上一行的信息
        last = first;
        
        for(int i = 1 ; i < numRows ; i++){
            
            vector<int>now;
            //先添加1
            now.push_back(1);
            //注意小于last.size()-1,即一共n-2次迭代
            for(int j= 0; j < last.size()-1;j++){
                now.push_back( last[j]+last[j+1] );
            }
            
            now.push_back(1);
            
            result.push_back(now);
            
            last = now;
            
        }
        return result;
    }
};


你可能感兴趣的:(LeetCode)