Given an indexk, return thekthrow of the Pascal's triangle.
这题如果下标控制得好的话,可以不用多开一个数组。一开始想的时候觉得在原数组上改会把前面的覆盖掉所以躲开了一列存last。但其实如果从后面开始往前更的话,就会没有这个问题。啊,还有,这题跟118 Pascal's triangle I的不同是,这里从0开始。
public List<Integer> getRow(int rowIndex) {
List<Integer> res = new ArrayList<>();
if (rowIndex < 0) {
return res;
}
res.add(1);
List<Integer> last = res;
for (int i = 1; i <= rowIndex; i++) {
res = new ArrayList<>();
res.add(1);
for (int j = 1; j < last.size(); j++) {
int sum = last.get(j) + last.get(j - 1);
res.add(sum);
}
res.add(1);
last = res;
}
return res;
}
// 再写
public List<Integer> getRow(int rowIndex) {
List<Integer> res = new ArrayList<>();
if (rowIndex < 0) {
return res;
}
res.add(1);
List<Integer> last = res;
for (int i = 1; i <= rowIndex; i++) {
res = new ArrayList<>();
res.add(1);
for (int j = 1; j <= i - 1; j++) {
res.add(last.get(j) + last.get(j - 1));
}
res.add(1);
last = res;
}
return res;
}
public List<Integer> getRow(int rowIndex) {
ArrayList<Integer> result = new ArrayList<Integer>();
if (rowIndex < 0)
return result;
result.add(1);
for (int i = 1; i <= rowIndex; i++) {
for (int j = result.size() - 2; j >= 0; j--) {
result.set(j + 1, result.get(j) + result.get(j + 1));
}
result.add(1);
}
return result;
}