题目描述
给出一个索引k,返回杨辉三角的第k行 例如,k=3, 返回[1,3,3,1]. 备注: 你能将你的算法优化到只使用O(k)的额外空间吗?
思路
- 只能创建一维数组,长度为:行数+1,初始化全一
- 从第三行开始更新,并且每次从每行中间开始往前更新
- 每个位置为前一个位置与本身的和
- 将对称位置赋值
class Solution {
public:
/**
*
* @param rowIndex int整型
* @return int整型vector
*/
vector<int> getRow(int rowIndex) {
// write code here
// 要求空间O(k)
vector<int> arr(rowIndex+1, 1);
for(int i = 2; i < rowIndex + 1; i++){
for(int j = i/2; j > 0; j--){
// 每个位置为本身与前一个元素的和
arr[j] = arr[j-1] + arr[j];
// 对称
arr[i-j] = arr[j];
}
}
return arr;
}
};