首页 > 其他分享 > leetcode_数据结构_入门_118. 杨辉三角

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

时间:2023-01-28 17:35:40浏览次数:54  
标签:元素 ArrayList leetcode List 118 numRows 杨辉三角 generate

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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:元素,ArrayList,leetcode,List,118,numRows,杨辉三角,generate
From: https://www.cnblogs.com/yzhone/p/17070930.html

相关文章

  • LeetCode-1664 生成平衡数组的方案树
    题目描述来源:力扣(LeetCode)链接:https://leetcode.cn/problems/ways-to-make-a-fair-array 给你一个整数数组 nums 。你需要选择恰好 一个下标(下标从0 开始)并删除......
  • leetcode_数据结构_入门_566. 重塑矩阵
    566.重塑矩阵 在MATLAB中,有一个非常有用的函数reshape,它可以将一个 mxn矩阵重塑为另一个大小不同(rxc)的新矩阵,但保留其原始数据。给一个由二维数组mat表示......
  • [LeetCode] 1664. Ways to Make a Fair Array
    Youaregivenanintegerarray nums.Youcanchoose exactlyone index(0-indexed)andremovetheelement.Noticethattheindexoftheelementsmaychangea......
  • 【双指针】LeetCode 167. 两数之和 II - 输入有序数组
    题目链接167.两数之和II-输入有序数组思路本思路来自一张图告诉你O(n)的双指针解法的本质原理(C++/Java)下图是白色部分初始的搜索空间,即A[0]+A[7]假如targ......
  • 【双指针】LeetCode 647. 回文子串
    题目链接647.回文子串思路使用中心扩散法解决,在【双指针】LeetCode5.最长回文子串的代码上稍作修改即可。代码classSolution{publicintcountSubstrings......
  • 【双指针】LeetCode 5. 最长回文子串
    题目链接5.最长回文子串思路1:中心扩散法遍历字符串s,对于每个字符都以它为中心向两边扩散,测得最长回文子串。注意:在扩散的过程中要分回文串长度奇偶进行扩散,因为长度......
  • 【双指针】LeetCode 680. 验证回文串 II
    题目链接680.验证回文串II思路题目允许删除一个字符,那么当我们判断到一对字符不相等时,可以分别判断区间\([left+1,right]\)和区间\([left,right-1]\)是否能......
  • 【双指针】LeetCode 125. 验证回文串
    题目链接125.验证回文串思路简单双指针应用代码classSolution{publicbooleanisPalindrome(Strings){StringBuffersgood=newStringBuffer();......
  • POJ 1185 炮兵阵地
    感觉上很难,确实自己做一开始没有想到是dp问题,同时没有进行剪枝,同时有一些准备工作没有做好没有提前将每一行的信息转成数字信息(做题经验不足)没有提前把每行可能的情况抽......
  • LeetCode三数之和(vector/排序+双指针)
    原题解题目约束解法classSolution{public:vector<vector<int>>threeSum(vector<int>&nums){intn=nums.size();sort(nums.begin......