Java教程

118. 杨辉三角

本文主要是介绍118. 杨辉三角,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

118. 杨辉三角

  • 题目描述
  • 解题思路
  • 代码

题目描述

在这里插入图片描述

解题思路

解法一:数学
思路:分两层,最外层的列表ret和列表内元素(也是列表)row。然后,对于杨辉三角的每一行,两边均为1(j0 || j1),中间的元素,利用上一行对应两个元素之和(ret.get(i-1).get(j-1)+ret.get(i-1.get(j)))。最后,再将每一行添加到ret中。
时间复杂度:O(numRows^2)。
空间复杂度:O(1)。不考虑返回值的空间占用

代码

 public static List<List<Integer>> generate(int numRows) {
            List<List<Integer>> ret = new ArrayList<List<Integer>>();
            for (int i = 0; i < numRows; ++i) {
                List<Integer> row = new ArrayList<Integer>();
                for (int j = 0; j <= i; ++j) {
                    if (j == 0 || j == i) {
                        row.add(1);
                    } else {
                        row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j));
                    }
                }
                ret.add(row);
            }
            return ret;
        }
}

链接:https://leetcode-cn.com/problems/pascals-triangle/solution/yang-hui-san-jiao-by-leetcode-solution-lew9/
来源:力扣(LeetCode)。

这篇关于118. 杨辉三角的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!