118.杨辉三角
题目:[https://leetcode-cn.com/problems/pascals-triangle/description/]
思路:输入数字n,返回第1层到第n层第数列。通过观察,可以发现除了首项和末项为1以外,其余项目都等于相应上层项数家上的上层项数的前项数,即是:num[i][j]=num[i][j-1]+num[i-1][j-1]。只要根据规律计算其他项目,并加上首尾项目即可
代码:
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> ans;
vector<int> zero;
zero.clear();//空容器边界控制
for (int layer=0;layer!=numRows;++layer) {//构建第几层,此处layer从0开始,最大值为numRows-1,故不能等于numRows
ans.push_back(zero);
for (int i=0;i!=layer+1;++i) {//构建第几个元素,此次i从0开始,每行最多有layer个元素,故最大值为可以为layer,故不等于layer+1
if (i==0||i==layer) {//排除首尾元素为1;
ans[layer].push_back(1);
}
else{//其他元素构建
ans[layer].push_back(ans[layer-1][i]+ans[layer-1][i-1]);
}
}
}
return ans;
}
};
反思:1、循环的边界控制

浙公网安备 33010602011771号