【嘎】数组-杨辉三角

题目: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。

在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5
输出:
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]

 1 class Solution {
 2     public List<List<Integer>> generate(int numRows) {
 3         List<List<Integer>> res = new ArrayList<List<Integer>>(numRows);
 4         // i 是横向list的长度
 5         for (int i = 1; i <= numRows; i++) {
 6             List<Integer> lis = new ArrayList<Integer>(i);
 7             lis.add(0, 1);
 8             if (i < 2) {
 9                 // 这边一开始忘记了
10                 res.add(lis);
11                 continue;
12             }
13             for (int j = 1; j < i - 1; j++) {
14                 List<Integer> prelis = res.get(i - 2);
15                 lis.add(j, prelis.get(j-1) + prelis.get(j));
16             }
17             lis.add(i - 1, 1);
18             res.add(lis);
19         }
20         return res;
21     }
22 }

看了评论才知道我这种解法是【动态规划】迭代

动态规划(Dynamic Programming,所以我们简称动态规划为DP),动态规划是一种编程原理,可以通过将非常复杂的问题划分为更小的子问题来解决。这个原则与递归很类似,但是与递归有一个关键点的不同,就是每个不同的子问题只能被解决一次

Arrays.asList的作用是将数组转化为list

给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。

 

题目二: 在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 3
输出: [1,3,3,1]
进阶:

你可以优化你的算法到 O(k) 空间复杂度吗?

这一题没想出来,别人的写法:(啊脑阔疼,先休息一下)

fill()方法使用参考

声明举例:

public static void fill(int[] a, form, to, int var) 

参数:

a--数组

form--替换开始位置(包括)

to--替换结束位置(不包括)

var--要替换的值

 1 public List<Integer> getRow(int rowIndex) {
 2         List<Integer> ls = new ArrayList<>();
 3         ls.add(1);
 4         for (int i = 1;i <= rowIndex;i++){
 5             ls.add(1);
 6             for (int j = i-1;j > 0;j--)
 7                 ls.set(j, ls.get(j)+ls.get(j-1));
 8         }
 9         return ls;
10     }
 1   public List<Integer> getRow(int rowIndex) {
 2         Integer[] dp = new Integer[rowIndex + 1];
 3         Arrays.fill(dp,1);
 4         for(int i = 2;i < dp.length;i++){
 5             for(int j = i - 1;j > 0;j--)
 6                 dp[j] = dp[j] + dp[j - 1];
 7         }
 8         List<Integer> res = Arrays.asList(dp);
 9         return res;
10     }

 

posted @ 2020-03-10 14:28  仓鼠爱画方格子  阅读(138)  评论(0编辑  收藏  举报