import java.util.ArrayList;
public class Solution {
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
public ArrayList<ArrayList<Integer>> generate(int numRows) {
if(numRows<=0)return list;
else if(numRows==1) {
ArrayList<Integer> a = new ArrayList<Integer>();
a.add(1);
list.add(a);
return list;
}
else if(numRows==2) {
ArrayList<Integer> a = new ArrayList<Integer>();
ArrayList<Integer> b = new ArrayList<Integer>();
a.add(1);
list.add(a);
b.add(1);
b.add(1);
list.add(b);
return list;
}
else {
ArrayList<Integer> a = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> generate = generate(numRows-1);
ArrayList<Integer> prev = generate.get(generate.size()-1);
//prev[i-1]+prev[i]=curr[i];numRows-1>i>0
a.add(1);
for (int i = 1; i < numRows-1; i++) {
a.add(prev.get(i-1)+prev.get(i));
}
a.add(1);
list.add(a);
}
return list;
}
}
题目描述
Given numRows, generate the first numRows of Pascal's triangle.
For example, given numRows = 5,
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
w我用的递归。
但是别人用的也很简洁,两个for循环就可以了
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> generate(int numRows) {
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
for (int i = 0; i < numRows; i ++) {
ArrayList<Integer> temp = new ArrayList<>();
for (int j = 0; j <= i; j ++) {
if(j == 0 || j == i) temp.add(1);
else temp.add(list.get(i - 1).get(j - 1) + list.get(i - 1).get(j));
}
list.add(temp);
}
return list;
}
}