这道题比较简单,也没啥算法特色,一遍一遍遍历即可。
package likou;
import java.util.ArrayList;
import java.util.List;
/*
*118.杨辉三角
*题干:
* 给定一个非负整数numRows,生成杨辉三角的前numRows行
* 在杨辉三角种,每个数就是它左上方和右上方的数的和
*/
public class Demo118 {
/*
* 解题思路:要把杨辉三角打印出来
* 这里也没啥窍门,一遍一遍遍历即可,
* 但要主要的是每一行的第一个和最后一个元素都是1
*/
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> tempList = new ArrayList<>();
tempList.add(1);
list.add(tempList);
for (int i = 1; i < numRows; i++) {
List<Integer> tempList1 = list.get(i - 1);
tempList = new ArrayList<>();
tempList.add(1);
for (int j = 1; j < i ; j++) {
tempList.add(tempList1.get(j - 1) + tempList1.get(j));
}
tempList.add(1);
list.add(tempList);
}
return list;
}
public static void main(String args[]) {
Demo118 demo = new Demo118();
List<List<Integer>> list = demo.generate(5);
}
}