怒刷力扣(杨辉三角)

简介: 杨辉三角是在数学二项式中会遇到,在简单的算法题中出现的频率也是很高,不过确实是个简单的算法题,快来看看吧。

杨辉三角

WangScaler: 一个用心创作的作者。

声明:才疏学浅,如有错误,恳请指正。

题目

给定一个非负整数 numRows 生成「杨辉三角」的前 numRows 行。

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

img

初次分析

这个题上大学那会儿,就做过,在数学上好像也有做过。杨辉三角就是把二项式进行了图形化。如上图所示,每个数的值为

A(j,k)=A(j−1,k−1)+A(j−1,k)

解决这个题必须两层for循环,第一层循环是层数,也就是numRows是几,我们就遍历几次。

第二层循环是把该层的值计算出来放到LIst里面。

也就是说解决这个题的关键就在第二次for循环上。

继续分析

那么我们怎么如何得到每一层的值呢。

  • 每一层的第一个数和最后一个数都是1
  • 每一层的剩下的数都是上一层左右两边的数之和。
  • 每一层的数量等于层数

找到这些规律,那么这个题的答案就不难写出了。

答案

public static List<List<Integer>> generate(int numRows) {
    int count = 1;
    List<List<Integer>> lists = new ArrayList<>();
    while (count <= numRows) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        if (count != 1) {
            for (int i = 0; i < lists.get(count - 2).size() - 1; i++) {
                list.add(lists.get(count - 2).get(i) + lists.get(count - 2).get(i + 1));
            }
            list.add(1);
        }
        lists.add(list);
        count++;
    }
    return lists;
}

复杂度

  • 时间复杂度: O(n2)。其中n为层次的值,因为两次循环,所有为O(n2)
  • 空间复杂度:O(1)。不考虑返回值的空间占用。

总结

我的答案专门写了个if条件判断是否是第一层,我感觉这个地方有优化空间,改天有时间了再来调整下代码。如果你看到了,欢迎指正哦。我这里没把第一层的数写到while循环外边,是为了防止传个小于等于0的数进来,那样直接返回第一层的答案,显然是不和逻辑的。

但是题目有强调1 <= numRows <= 30,所以可以放到外边。

都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!

目录
相关文章
|
6月前
|
算法
【LeetCode】136. 只出现一次的数字、118. 杨辉三角
目录 136. 只出现一次的数字 118. 杨辉三角
26 0
|
7月前
leetcode:118. 杨辉三角
函数原型:int** generate(int numRows, int* returnSize, int** returnColumnSizes) 参数解析:numRows是指明要求前几行杨辉三角 returnSize是返回指针数组的元素个数 returnColumnSizes是指明杨辉三角每一行有几个元素
34 0
|
8月前
|
算法
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
《LeetCode-数组篇一》之杨辉三角与重塑矩阵
|
9月前
|
存储
力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 & 记忆法/备忘录)
力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 & 记忆法/备忘录)
58 0
|
9月前
|
索引
力扣118杨辉三角:代码实现+注释详解+其它思考
力扣118杨辉三角:代码实现+注释详解+其它思考
44 0
|
算法 Java
《LeetCode刷题计划》—— 杨辉三角(用面向对象的思想来实现)
《LeetCode刷题计划》—— 杨辉三角(用面向对象的思想来实现)
|
JavaScript 前端开发 索引
JS 刷 Leetcode:119.杨辉三角 II
JS 刷 Leetcode:119.杨辉三角 II
JS 刷 Leetcode:119.杨辉三角 II
|
JavaScript
JS 刷 Leetcode:118.杨辉三角
JS 刷 Leetcode:118.杨辉三角
JS 刷 Leetcode:118.杨辉三角

热门文章

最新文章