OJ练习28——T118 Pascal's Triangle

打印杨辉三角:

[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]

输入打印的行数,返回vector<vector<int> >类型。

【思路】

1.我的思路是,先分配vector的空间,用resize,再用下标访问[i]。

2.别人的思路,每行都是一个新vector<int> cur,赋值后push_back到ret。

【other codes】

vector<vector<int> > generate(int numRows) {
        int i, j;
        for(i=0; i<numRows; i++)
        {
            vector<int> cur;
            if(i==0)
                cur.push_back(1);
            else{
            for(j=0; j<=i; j++)
            {
                if(j==0||j==i)
                    cur.push_back(1);
                else{
                    int ans=ret[i-1][j-1]+ret[i-1][j];
                    cur.push_back(ans);
                }
            }
            }
            ret.push_back(cur);
            
        }
        return ret;
    }

【my code】

vector<vector<int> > generate(int numRows) {
    vector<vector<int> >ret;
  if(numRows==0)
        return ret;
int i, j; ret.resize(numRows); ret[0].push_back(1); for(i=1; i<numRows; i++) { ret[i].resize(i+1); ret[i][0]=1; ret[i][i]=1; for(j=1; j<i; j++) { ret[i][j]=ret[i-1][j-1]+ret[i-1][j]; } } return ret; }

【评价】

一开始总是不能通过,显示最后一个执行的测试是{0},

加上if(numRows==0)        return ret;这句话就OK了,应该考虑到不合法的情况,这样返回的ret是个空向量?!

原文地址:https://www.cnblogs.com/ketchups-notes/p/4453427.html