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; }
补充:标签:元素,ArrayList,leetcode,List,118,numRows,杨辉三角,generate From: https://www.cnblogs.com/yzhone/p/17070930.html
包装类:
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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。