/* * 杨辉三角 * * 每一行第一个元素是一个1 最后一个元素也是1; * 中间其他的元素 *[i][j] = [i-1][j] + [i-1][i-j] ; 中间部分 * 之后做一道题 做一两天或者1个小时都很正常 ; * */ class Solution { public List<List<Integer>> generate (int numRows){ List<List<Integer>> ret = new ArrayList<>(); List<Integer> list0 = new ArrayList<>();// 单独的一行数列; list0 .add(1); // 首先给第一行放进了一个数字 1; ret.add(list0); // 将list0 这行数列 放入 ret 这个数列当中; for (int i = 1; i < numRows ; i++) { List<Integer> list = new ArrayList<>(); list.add(1); // 给每一组数列的第一个位置 放入1 也就相当于头; List<Integer> prevRow = ret. get(i-1); // 获取上一行数列的引用; for (int j = 1; j < i; j++) { // 此时放入i 那就相当于 j就只会让中间的数组进来; int val = prevRow.get(j) + prevRow.get(j-1); list.add(val);// 将中间值 放入每一行list中; } list.add(1);// 尾巴 ret.add(list);// 每一次走到这里将头 中间 尾部 拼接完成放回 ret中; } return ret; // 最后返回ret 这个数列中的数列; } }
杨辉三角 的练习
最新推荐文章于 2024-10-15 18:50:01 发布