pascals triangle ii(楊輝三角、帕斯卡三角)
阿新 • • 發佈:2019-01-12
題目描述
Given an index k, return the k th 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行索引的結果
例如,給定:k=3,
返回:[1,3,3,1]
空間複雜度要求為O(k)。
思路
也是一個楊輝三角的問題,但是這個題不要求返回整個楊輝三角,只要求返回索引行的結果,而且要求空間複雜度為O(k)。
因此想到用動規的思想,用一維陣列的動態更新來模擬二維陣列,但是,考慮每一行的時候,當從前向後遞迴時是有後效影響的,因此採用從後向前迭代的方式。
程式碼
#include<iostream> #include<vector> using namespace std; vector<int> getRow(int rowIndex) { rowIndex++; // 行索引加一是真正的行數 vector<int > res(rowIndex, 1); // 第一二行均為1,從第三行才需要進行計算操作 // 因此索引從2開始 for(int i=2; i<rowIndex; i++) { for(int j=i-1; j>0; j--) { // 每次從後向前迭代 res[j] = res[j-1] + res[j]; } } return res; } int main() { vector<int > res; int n; while(true) { cout<<"輸入:"; cin>>n; res = getRow(n); cout<<"輸出:"; for(int i=0; i<res.size(); i++) { cout<<res[i]<<' '; } cout<<endl; } return 0; }
執行結果
以上。