[LeetCode 119] - 杨辉三角形II(Pascal's Triangle II)
2013-06-30 19:11
507 查看
问题
给出一个索引k,返回杨辉三角形的第k行。例如,给出k = 3,返回[1, 3, 3, 1]
注意:
你可以优化你的算法使之只使用O(k)的额外空间吗?
初始思路
首先来复习复习杨辉三角形的性质(来自wiki):杨辉三角以正整数构成,数字左右对称,每行由1开始逐渐变大,然后变小,回到1。
第
class SolutionV2 { public: std::vector<int> getRow(int rowIndex) { std::vector<int> columnInfo(rowIndex + 1); nFactorial_ = 1; for(int i = 1; i <= rowIndex; ++i) { nFactorial_ *= i; } columnInfo[0] = 1; columnInfo[rowIndex] = 1; for(int i = 1; i <= rowIndex / 2; ++i) { columnInfo[i] = CaculateCombination(rowIndex, i); } int left = 1; int right = rowIndex - 1; while(left < right) { columnInfo[right] = columnInfo[left]; ++left; --right; } return columnInfo; } private: int64_t CaculateCombination(int n, int k) { int64_t kFactorial = 1; int64_t restFactorial = 1; for(int i = 1; i <= k; ++i) { kFactorial *= i; } for(int i = 1; i <= n - k; ++i) { restFactorial *= i; } return nFactorial_ / (kFactorial * restFactorial); } int64_t nFactorial_; };
阶乘-有缺陷
相关文章推荐
- LeetCode(119) Pascal's Triangle II
- LeetCode#119 Pascal's Triangle II
- 每天一道LeetCode--119.Pascal's Triangle II(杨辉三角)
- Leetcode 119 Pascal's Triangle II 数论递推
- leetcode 119. Pascal's Triangle II 杨辉三角形2
- [LeetCode] 119. Pascal's Triangle II 杨辉三角 II
- leetcode_119——Pascal's Triangle II (简单题,简单的递归)
- 119. Pascal's Triangle II LeetCode
- LeetCode-119-Pascal's Triangle II-E
- LeetCode 118, 119. Pascal's Triangle i, ii
- LeetCode 119. Pascal's Triangle II
- [Leetcode]119. Pascal's Triangle II
- LeetCode(33)-Pascal's Triangle II
- 【LeetCode】119.Pascal Triangle II
- LeetCode-Array-119. Pascal's Triangle II
- leetcode119. Pascal's Triangle II
- [Leetcode][JAVA] Pascal's Triangle I, II
- 【Leetcode】119. Pascal's Triangle II
- LeetCode119. Pascal's Triangle II-python(easy)
- LeetCode 119: Pascal's Triangle II