The idea is to build next level based on the current one… a separate method makes the coding easier.
public class Solution {
public ArrayList<ArrayList<Integer>> generate(int numRows) {
ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
if(numRows == 0){
return results;
}
ArrayList<Integer> oneArrayList = new ArrayList<Integer>();
oneArrayList.add(1);
results.add(oneArrayList);
int i = 2;
while(i <= numRows){
results.add(generateEachRow(results.get(i - 2), i));
i++;
}
return results;
}
private ArrayList<Integer> generateEachRow(ArrayList<Integer> input, int num){
ArrayList<Integer> result = new ArrayList<Integer>();
// if(num == 2){
// result.add(1);
// result.add(1);
// return result;
// }
// for(int i = 0; i < input.size(); i++){
// if(i == 0 || i == input.size() - 1){
// result.add(input.get(i));
// if(i == input.size() - 1){
// break;
// }
// }
// result.add(input.get(i) + input.get(i + 1));
// }
for(int i = 0; i < num; i++){
if(i == 0 || i == num - 1){
result.add(1);
}else{
result.add(input.get(i) + input.get(i - 1));
}
}
return result;
}
}
没有评论:
发表评论