NC245. 杨辉三角(一)
描述
示例1
输入:
1
输出:
[[1]]
示例2
输入:
4
输出:
[[1],[1,1],[1,2,1],[1,3,3,1]]
C++ 解法, 执行用时: 2ms, 内存消耗: 388KB, 提交时间: 2022-01-23
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return int整型vector<vector<>> */ vector<vector<int> > generate(int num) { // write code here vector<vector<int>> res(num,vector<int>(num)); for(int i=0;i<num;i++){ for(int j=0;j<i+1;j++){ if(!j) res[i][j]=1; else res[i][j]=res[i-1][j]+res[i-1][j-1]; } } for(int i=0;i<num;i++) res[i].resize(i+1); return res; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 392KB, 提交时间: 2022-01-25
class Solution { public: /* 方法一:数组模拟(利用1个数组) 解题思路 首先新建一个二维数组,用于存储所有数字。遍历每一层,确定每一层子数组, 根据每个数等于左上方和右上方的数之和,确定每一层子数组的每一个值。 复杂度分析 时间复杂度:总共两层循环,需要执行(num+1)∗(num+2)/2次,所以时间复杂度是O(num^2) 空间复杂度:需要额外大小为(num+1)∗(num+2)/2的res数组,所以空间复杂度为O(num^2) */ vector<vector<int> > generate1_1(int num) { vector<vector<int>> res(num, vector<int>()); //二维数组,指定行数不指定列数 for(int i = 0; i <= num - 1; i++) { res[i] = vector<int>(i + 1); //存储当前层数字 for (int j = 0; j <= i; ++j) { if (j == 0 || i == j) res[i][j] = 1; //当前层第1个数字 else //每个数等于左上方和右上方的数之和 res[i][j] = res[i - 1][j - 1] + res[i - 1][j]; } } return res; } /* 方法一另一种写法:创建2个数组 */ vector<vector<int> > generate(int num) { vector<vector<int>> ans; //最终返回结果 vector<int> temp; //缓存当前行结果 for(int i = 0 ; i < num ; ++i) { for(int j = 0 ; j <= i ; ++j) { if(j ==0 || i == j) temp.push_back(1); else temp.push_back(ans[i-1][j-1] + ans[i-1][j]); } ans.push_back(temp); temp.clear(); } return ans; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 312KB, 提交时间: 2022-02-05
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return int整型vector<vector<>> */ vector<vector<int> > generate(int num) { // write code here vector<vector<int> > res; if(num == 1) return {{1}}; if(num == 2) return {{1},{1,1}}; res.push_back(vector<int>(1,1)); res.push_back(vector<int>(2,1)); for(int i = 3; i <= num; i ++) { res.push_back(vector<int>(i,1)); for(int j = 1; j < i-1 ; j++) { res[i-1][j] = res[i-2][j-1]+ res[i-2][j]; } } return res; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-08-05
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return int整型vector<vector<>> */ vector<vector<int> > generate(int num) { // write code here vector<vector<int>> res; for(int i=0;i<num;i++){ vector<int> cur(i+1,0); for(int j=0;j<i+1;j++){ if(i>0&&j>0&&j<i){ cur[j]=res[i-1][j-1]+res[i-1][j]; }else cur[j]=1; } res.push_back(cur); } return res; } };
C++ 解法, 执行用时: 3ms, 内存消耗: 384KB, 提交时间: 2022-08-03
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @return int整型vector<vector<>> */ vector<vector<int> > generate(int num) { // write code here vector<vector<int> > local_Vector_result; for (int i = 0; i < num; i++) { vector<int> local_Vector_element; if (local_Vector_result.empty()) { local_Vector_element.push_back(1); local_Vector_result.push_back(local_Vector_element); continue; } vector<int> local_Vector_last = local_Vector_result.back(); local_Vector_element.push_back(1); for (int j = 0; j < local_Vector_last.size() - 1; j++) { local_Vector_element.push_back(local_Vector_last[j] + local_Vector_last[j+1]); } local_Vector_element.push_back(1); local_Vector_result.push_back(local_Vector_element); } return local_Vector_result; } };