【LeeCode做题日记(C/C++)--简单】118题:杨辉三角(一)

本人刷LeeCode不按顺序啦嘿嘿嘿,所以先放一个杨辉三角。

因为学校里学的是Java,所以对C/C++不熟悉,但是准备保研看到好多学校机试C/C++居多,所以全都用C/C++来刷题啦!

【题目】

杨辉三角大家都比较熟悉了~

 

【题目关注点】

(我个人想要关注的点哦~不想看直接往下拉就好了~o(* ̄▽ ̄*)ブ)

二维向量的创建:

1、每行(列)元素个数都相同:

//m*n的二维向量
vector<vector<int> > vec(m, vector<int>(n));

2、每行元素个数不相同:

vector<vector<int> >vec;//先声明一个二维向量
//每一行的元素个数等于该行的下标加一
for(int i=0; i < numRows; i++)
	vec.push_back(vector<int>(i+1,0));

 

【解答】

class Solution {
public:
    vector<vector<int>> generate(int numRows) {
        vector<vector<int> >vec;
        for(int i=0; i < numRows; i++)
	        vec.push_back(vector<int>(i+1,0));
        for(int r=0; r<numRows; ++r){
            for(int c=0; c<r+1; ++c){
                if(c==0||c==r){//当循环到每行的第一个和最后一个元素时直接赋值为1
                     vec[r][c] = 1;
                }
                else if(r!=0){
                    vec[r][c] = vec[r-1][c]+vec[r-1][c-1];
            } 
        }
    }
    return vec;
    }
};

 (不同次提交相同代码也可能会有不同的执行时间,所以仅供参考哦~)

吼吼吼,比不上少于5ms的大佬们,达到8ms我也感到很惊喜很满足了!继续努力吧!