• 杨辉三角


    题目:

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

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

    示例:

    输入: 5
    输出:
    [
         [1],
        [1,1],
       [1,2,1],
      [1,3,3,1],
     [1,4,6,4,1]
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/pascals-triangle
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    分析:

    这道题目的规则实际上已经在题干中给出了,在杨辉三角中第一行和第二行是固定的,从第三行开始中间部分需要计算,但是首位数和末位数固定为1。

    第三行需要计算一次,第四行需要计算两次... ...

    由于前两行不需要计算,所以如果要求计算3行,那么实际上外层循环只需要执行一次,内层循环也只需要执行一次。如果要求计算4行,那么实际上外层循环只需要执行二次,第一次外层循环的内层循环执行一次,第二次外层循环的内层循环执行两次。

    代码:

    class Solution {
        public List<List<Integer>> generate(int numRows) {
            if (numRows == 0) {
                return new ArrayList<>();
            }
            List<List<Integer>> lists = new ArrayList<>();
            if (numRows >= 1) {
                List<Integer> oneRows = new ArrayList<>();
                oneRows.add(1);
                lists.add(oneRows);
            }
            if (numRows >= 2) {
                List<Integer> twoRows = new ArrayList<>();
                twoRows.add(1);
                twoRows.add(1);
                lists.add(twoRows);
            }
            if (numRows < 3) {
                return lists;
            }
            for (int i = 0; i < numRows - 2; i++) {
                List<Integer> anyRows = new ArrayList<>();
                anyRows.add(1);
                for (int j = 0; j < i + 1; j++) {
                    List<Integer> preRows = lists.get(i + 1);
                    anyRows.add(preRows.get(j) + preRows.get(j + 1));
                }
                anyRows.add(1);
                lists.add(anyRows);
            }
            return lists;
        }
    }
  • 相关阅读:
    mysql 设置无密码登陆
    phpstudy mysql 升级5.7.18
    php 统计二维数组中某个相等值的总个数,并且组合成一个新的数组 转发
    centos 安装 composer
    PHP不定维数组去除空值
    jQuery中$.ajax()详解(转)
    JSON详解(转发自博客园)
    详解CMS垃圾回收机制
    内存管理
    什么是同源策略
  • 原文地址:https://www.cnblogs.com/wxdmw/p/13279807.html
Copyright © 2020-2023  润新知