这两题都比较简单,第一题输出杨辉三角,第二题输出特定的某一行,第二题要求空间复杂度为O(k)
代码如下:
Pascal's Triangle:
public List<List<Integer>> generate(int numRows) {//direct simulate
List<List<Integer>> rs = new LinkedList<List<Integer>>();
if(numRows == 0)return rs;
else {
for(int i = 0; i< numRows; ++ i){
if(i == 0){
List<Integer> row = new LinkedList<Integer>();
row.add(1);
rs.add(row);
}else {
List<Integer> lastRow = rs.get(i - 1);
List<Integer> row = new LinkedList<Integer>();
row.add(1);
int k1 = 0, k2 = k1 +1;
for(;k2 < lastRow.size();){
row.add(lastRow.get(k1) + lastRow.get(k2));
k1 ++;
k2 ++;
}
row.add(1);
rs.add(row);
}
}
}
return rs;
}
Pascal's Triangle II:
public List<Integer> getRow(int rowIndex) { //space capacity O(K)
List<Integer> rs = new LinkedList<Integer>();
if(rowIndex < 0) return rs;
else {
if(rowIndex == 0){
rs.add(1);
return rs;
}else {
rs.add(1);
int k1 = 2;
while (k1 <= rowIndex + 1){
int k3 = 1;
rs.add(1);
while (k3 < k1 - 1){
rs.add(rs.get(0) + rs.get(1));
rs.remove(0);
k3 ++;
}
if(k3 == k1 -1){
rs.remove(0);
}
rs.add(1);
k1 ++;
}
}
}
return rs;
}