Leetcode118.杨辉三角
题目:118.给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
题解:
时间复杂度:
O
(
(
n
u
m
R
o
w
s
)
2
)
O({(numRows)}^2)
O((numRows)2)
空间复杂度:
O
(
(
n
u
m
R
o
w
s
)
2
)
O({(numRows)}^2)
O((numRows)2)
java代码:
public static List<List<Integer>> fun118(int numRows) {
List<List<Integer>> res = new ArrayList<>();
res.add(new ArrayList<>());
res.get(0).add(1);
for(int i=1;i<numRows;i++){
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
for(int j=1;j<i;j++){
list.add(res.get(i-1).get(j-1)+res.get(i-1).get(j));
}
list.add(1);
res.add(list);
}
return res;
}
scala代码如下:
def generate(numRows: Int): util.ArrayList[util.ArrayList[Int]] = {
val list = new util.ArrayList[util.ArrayList[Int]]()
list.add(new util.ArrayList[Int]())
list.get(0).add(1)
for (i <- 1 until numRows) {
val row: util.ArrayList[Int] = new util.ArrayList[Int]()
val preRow: util.ArrayList[Int] = list.get(i - 1)
//第一个元素为1
row.add(1)
for (j <- 1 until i) {
row.add(preRow.get(j - 1) + preRow.get(j))
}
//最后一个元素为1
row.add(1)
list.add(row)
}
list
}