leetcode_数据结构_入门_118. 杨辉三角

118. 杨辉三角

        给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。

方法一:数学
思路及解法
杨辉三角,是二项式系数在三角形中的一种几何排列。
它是中国古代数学的杰出研究成果之一,
它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

复杂度分析
时间复杂度:O(numRows 2次方)。
空间复杂度:O(1)。不考虑返回值的空间占用。

 

main函数

复制代码
package DataStructure_start;

import java.util.ArrayList;
import java.util.List;

public class DS20230128 {

    public static void main(String[] args) {

        List generate = generate(6);
        System.out.println(generate);
    }
}
复制代码

 

generate
复制代码
    public static List<List<Integer>> generate(int numRows) {

//        封装到包装类里
        List<List<Integer>> ret = new ArrayList<List<Integer>>();

        for (int i = 0; i < numRows; ++i) {
//            将元素放在 List集合 里
            List<Integer> row = new ArrayList<Integer>();
            for (int j = 0; j <= i; ++j) {
                //每一行的第一列(左侧)或 行等于列(右侧) 时
                if (j == 0 || j == i) {
                    //添加元素 1
                    row.add(1);
                } else {
                    //添加元素 左上角 + 右上角 的和
                    row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j));
                }
            }
//            添加一整行
            ret.add(row);
        }
        return ret;
    }
复制代码

 

 

补充:

包装类:
Java是一个面向对象的编程语言,但是Java中的八种基本数据类型却是不面向对象的,
为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,
这样八种基本数据类型对应的类统称为包装类(Wrapper Class),
包装类均位于java.lang包。
valueOf:
public static Integer valueOf(int i) {
assert IntegerCache.high>= 127;
if (i >= IntegerCache.low&& i <= IntegerCache.high)
return IntegerCache.cache[i+ (-IntegerCache.low)];
return new Integer(i);
}

List:
Collection主要有三个子接口,分别为List(列表)、Set(集)、Queue(队列)。
其中,List、Queue中的元素有序可重复,而Set中的元素无序不可重复。
在Collection中,
List集合是有序的,可对其中每个元素的插入位置进行精确地控制,可以通过索引来访问元素,遍历元素。
在List集合中,我们常用到ArrayList和LinkedList这两个类。
ArrayList
1,ArrayList底层通过数组实现,随着元素的增加而动态扩容。
2,ArrayList是Java集合框架中使用最多的一个类,是一个数组队列,线程不安全集合。
特点:
容量不固定,随着容量的增加而动态扩容(阈值基本不会达到)
有序集合(插入的顺序==输出的顺序)
插入的元素可以为null
增删改查效率更高(相对于LinkedList来说)
线程不安全


参考:
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/pascals-triangle/solution/yang-hui-san-jiao-by-leetcode-solution-lew9/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @   yzhone  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示