我是按难度往下刷的,第二道是帕斯卡三角形二。简单易懂,题目如下:
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 = ;
queue<int> tmp;
vector<int> Pascal; if (rowIndex == )
{
Pascal.push_back();
return Pascal;
} tmp.push();
tmp.push();
tmp.push(); for (int i = ; i < rowIndex; i++)
{
tmp.push();
do
{
aspros = tmp.front();
if (!tmp.empty())
tmp.pop();
defteros = tmp.front();
tmp.push(aspros + defteros);
} while (defteros != );
}
tmp.pop();
while (!tmp.empty())
{
Pascal.push_back(tmp.front());
tmp.pop();
} return Pascal;
}
queue和vector其实感觉还不熟,应该可以拿vector直接来做的【以后改】