※ Leetcode - Dynamic Programming - 119. Pascal's Triangle II(倒叙滚动数组求解杨辉三角第k行)
2016-08-05 20:54
525 查看
1. Problem Description
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行。
2. My solution
题目要求空间复杂度为O[k],也就是要使用滚动数组。然而如果正序求解会出现这样的问题:
Code://i为行数从1开始,j为列数从0开始,之前已经把vector内所有元素赋值为1
for(int i=1; i<=rowIndex+1; i++) for(int j=1; j<i-1; j++) res[j]=res[j-1]+res[j];
Result:
即滚动数组会使用这一行计算中更新过的数据,而不是上一行的数据。
因此我们逆序求解。
Code:
vector<int> getRow(int rowIndex) { vector<int>res; for(int i=1; i<=rowIndex+1; i++) res.push_back(1); // 倒叙求解(如果正序更新时会使用这轮更新过的数据) for(int i=1; i<=rowIndex+1; i++) for(int j=i-2; j>=1; j--) res[j]=res[j-1]+res[j]; return res; }
相关文章推荐
- (LeetCode)Pascal's Triangle II --- 杨辉三角进阶(滚动数组思想)
- 119. Pascal's Triangle II (杨辉三角 第k行)
- LeetCode-119:Pascal's Triangle II (返回杨辉三角指定行)
- [leetCode 118 & 119] Pascal's Triangle I && II (杨辉三角问题)
- Leetcode#119. Pascal's Triangle II(杨辉三角II)
- Leetcode 119. Pascal's Triangle II 杨辉三角2 解题报告
- [LeetCode][119. Pascal's Triangle II][easy]Java实现,杨辉三角
- Leetcode:119. Pascal's Triangle II(JAVA)
- Leetcode 119. Pascal's Triangle II
- Leetcode题解 119. Pascal's Triangle II
- [leetcode, python] Pascal's Triangle II 杨辉三角
- [LeetCode]118. Pascal's Triangle&119. Pascal's Triangle II
- [LeetCode]--119. Pascal's Triangle II
- LeetCode - 119. Pascal's Triangle II
- LeetCode 119. Pascal's Triangle II
- LeetCode-Easy部分中标签为Array#119 : Pascal’s Triangle II
- LeetCode119. Pascal's Triangle II
- leetcode 119 Pascal's Triangle II
- Leetcode-119. Pascal's Triangle II
- [leetcode, python] Pascal's Triangle II 杨辉三角