Given an index k, return the kth row of the Pascal’s triangle.
For example, given k = 3,
Return [1,3,3,1].
画出Pascal 三角可知,每一个数等于上一行同位置的数加上前一个位置的数。因此从第一行开始循环到第 rowIndex 行。时间是 O(n2) ,代码如下:
public class Solution {
public static List<Integer> getRow(int rowIndex) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
int level = 1;
for(int i = 0; i < rowIndex; i++) {
for(int j = level - 1; j > 0; j--) {
list.set(j, list.get(j) + list.get(j - 1));
}
list.add(1);
level++;
}
return list;
}
}
由于使用 ArrayList,所以在运算速度上慢好多。后面改用 数组存储,一下子从 3ms 变成 1ms,beats 89%。代码如下:
public class Solution {
public static List<Integer> getRow(int rowIndex) {
List<Integer> list = new ArrayList<Integer>();
int [] arr = new int[rowIndex + 1];
arr[0] = 1;
int level = 1;
for(int i = 0; i < rowIndex; i++) {
for(int j = level - 1; j > 0; j--) {
arr[j] = arr[j] + arr[j - 1];
}
arr[level] = 1;
level++;
}
for(int i = 0; i < rowIndex + 1; i++) {
list.add(arr[i]);
}
return list;
}
}