Problem
Given a non-negative integer numRows, generate the first numRows of Pascal’s triangle.
In Pascal’s triangle, each number is the sum of the two numbers directly above it.
Example:
1 | Input: 5 |
Analysis
这是一道很经典的杨辉三角题目,题目要求我们计算出杨辉三角。一个很自然的想法就是逐层计算,不断利用上一层的信息来计算当前层的内容。
首先我们需要构建好第一层,第一层只含一个1
。然后我们就可以使用循环来构建下面的层。每一层的第一个元素和最后一个元素都是1
这个需要我们手动添加进去。然后从下标i = 1
开始,利用上层的i - 1
和i
计算当前层的第i
个元素。
Solution
按照上面的分析编写代码,注意numRows
为0的情况。同时,注意循环中使用上一层元素时的边界问题,j
从i
到i-1
。
Code
1 | class Solution { |
运行时间:约0ms,超过100%的CPP代码。
Summary
这道题是很经典的杨辉三角,考察的主要是循环语句的使用。做之前需要分析每层的特点。这里考虑到每层头和尾的1
是要自己插入的,中间元素则是利用上一层的元素来计算,同时需要注意越界问题,可以说要完全做对还是需要仔细的思考。本题的分析到这里,谢谢您的支持!