Pascal's Triangle II
来自 <https://leetcode.com/problems/pascals-triangle-ii/>
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行的元素。例如k=3,返回[1,3,3,1]。只能用 O(k) 个额外空间。
解析:
假设在程序开始时就有 O(k) 个空间,由后向前就行添加每行的元素。例如在程序k=5,解析如下图所示
Java 代码:
public List<Integer> getRow(int rowIndex) {
ArrayList<Integer> currentLevel = new ArrayList<Integer>();
for (int i=0; i<rowIndex+1; i++) {
currentLevel.add(i, 1);
for(int j=i-1; j>0; j--) {
currentLevel.set(j, currentLevel.get(j) + currentLevel.get(j-1));
}
}
return currentLevel;
}
算法性能