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?
这题比较简单,知道公式是就没什么问题了。用一个temp数组存储前一轮的结果即可。
似乎是人生第一次在没用IDE的情况下一遍通过,庆贺一下
public class Solution {
public ArrayList<Integer> getRow(int rowIndex) {
int[] temp = new int[rowIndex + 1];
int[] result = new int[rowIndex + 1];
//set the first row with an 1 at the beginning and followed by zeroes
temp[0] = 1;
result[0] = 1;
for(int i = 1; i <= rowIndex; i++){
temp[i] = 0;
result[i] = 0;
}
for(int n = 1; n <= rowIndex; n++){
for(int k = 0; k <= rowIndex; k++){
if(k == 0){
result[k] = 0 + temp[k];
}
else{
result[k] = temp[k] + temp[k - 1];
}
}
//copy the content of result into temp array for the next iteration
System.arraycopy(result, 0, temp, 0, rowIndex + 1);
}
ArrayList<Integer> res = new ArrayList<Integer>(rowIndex + 1);
for(int i = 0; i <= rowIndex; i++){
res.add(result[i]);
}
return res;
}