题目背景
Given an integer numRows, return the first numRows of Pascal’s
triangle.In Pascal’s triangle, each number is the sum of the two numbers
directly above it as shown:Input: numRows = 5
Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
Input: numRows = 1
Output: [[1]]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/pascals-triangle
](https://img-blog.csdnimg.cn/20210401221404103.png)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法一
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans;
int i = 0;
while(i++<numRows){
vector<int> temp(i,1);
if(i>2){
for(int j=1;j<i-1;j++){
temp[j] = ans[i-2][j-1]+ans[i-2][j];
}
}
ans.push_back(temp);
}
return ans;
}
};
解法二
#include<iostream>
#include<vector>
#include<iterator>
#include<algorithm>
using namespace std;
vector<vector<int>> generate(int numRows){
vector<vector<int>> midvec={{1},{1,1}};
vector<int> midvec3={1,1};
int midnum2 = 2;
int midnum;
if(numRows==1)
return {{1}};
else if(numRows == 2)
return {{1},{1,1}};
else{
while(midnum2<numRows){
vector<int> midvec2={1,1};
for(int i=0;i<midnum2-1;i++){ //0 1 2
midnum = midvec3[i]+midvec3[i+1];//2
midvec2.insert(midvec2.begin()+i+1,midnum);
}
midvec3 = midvec2;
midnum2++;
midvec.push_back(midvec3);
}
}
return midvec;
}
int main(){
vector<vector<int>> out;
out = generate(5);
for(auto i:out){
for(auto j:i)
cout<<j<<" ";
cout<<endl;
}
return 0;
}