首页 > 代码库 > leetcode-pascal triangle I&&II
leetcode-pascal triangle I&&II
对于第2个pascal triangle,通过观察可以发现,其实只需要2个额外的变量来记录,于是就设了个tmp数组。
整体有点DP问题中的滚动数组的感觉。
1 #include <vector> 2 #include <iostream> 3 using namespace std; 4 5 class Solution { 6 public: 7 vector<vector<int> > generate(int numRows) { 8 vector<vector<int>> res; 9 if (numRows == 0) return res;10 for (int i = 0; i < numRows; i++)11 {12 vector<int> v; v.clear();13 for (int j = 0; j <= i; j++)14 {15 if (j == 0 || j == i) v.push_back(1);16 if (i>0 && j > 0 && j < i)17 {18 v.push_back(res[i - 1][j] + res[i - 1][j - 1]);19 }20 }21 res.push_back(v);22 }23 return res;///////////忘了返回了,一直找不出错来。24 }25 vector<int> getRow(int rowIndex) {26 vector<int> res(rowIndex+1,0);27 vector<int> tmp(2,0);28 //if (rowIndex == 0) return vector<int>(1,1);29 for (int i = 0; i <= rowIndex; i++)30 {31 tmp[0] = 1; tmp[1] = 1;//别放错位置。之前放到内层的for里了。32 for (int j = 0; j <= i; j++)33 {34 if (j == 0 || j == i)35 res[j] = 1;36 if (j>0 && j < i)37 {38 if (j % 2 == 0)39 tmp[0] = res[j];40 else if (j % 2 == 1)41 tmp[1] = res[j];42 res[j] += tmp[1-j%2];43 }44 }45 }46 return res;47 }48 };49 50 void printVV(vector<vector<int>> vv)51 {52 for (int i = 0; i < vv.size(); i++)53 {54 for (int j = 0; j < vv[i].size(); j++)55 {56 cout << vv[i][j] << " ";57 }58 cout << endl;59 }60 }61 int main()62 {63 Solution s;64 //vector<vector<int>> vv = s.generate(3);65 vector<int> v = s.getRow(0);66 for (int i = 0; i < v.size(); i++)67 {68 cout << v[i] << " ";69 }70 //printVV(vv);71 return 0;72 }
leetcode-pascal triangle I&&II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。