我是按难度往下刷的,第二道是帕斯卡三角形二。简单易懂,题目如下:
Given an index k, return the kth row of the Pascal‘s triangle.
For example, given k = 3, Return
[1,3,3,1]
.Note: Could you optimize your algorithm to use only O(k) extra space?
就是输入k然后输出第k行帕斯卡三角【其实我一直把它叫杨辉三角】。
我这边思路是拿queue来不断弹出压入处理做那个二项式展开:
vector<int> getRow(int rowIndex) { int aspros, defteros; aspros = defteros = 0; queue<int> tmp; vector<int> Pascal; if (rowIndex == 0) { Pascal.push_back(1); return Pascal; } tmp.push(0); tmp.push(1); tmp.push(1); for (int i = 1; i < rowIndex; i++) { tmp.push(0); do { aspros = tmp.front(); if (!tmp.empty()) tmp.pop(); defteros = tmp.front(); tmp.push(aspros + defteros); } while (defteros != 0); } tmp.pop(); while (!tmp.empty()) { Pascal.push_back(tmp.front()); tmp.pop(); } return Pascal; }
queue和vector其实感觉还不熟,应该可以拿vector直接来做的【以后改】
[leetcode] 2. Pascal's Triangle II
时间: 2024-12-28 16:02:07