LeetCode做题笔记第118题:杨辉三角
Posted 李公子lm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode做题笔记第118题:杨辉三角相关的知识,希望对你有一定的参考价值。
题目描述
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
在杨辉三角中,每个数是它左上方和右上方的数的和。
实例:
解题思路
首先分析题目可知,第i行是有i个元素,且每个元素的值,假设下标为index,则元素值为上一行的index-1位置和index位置的元素和。举例第五行第2个元素4,下标为1,则其等于第四行第1-1=0位置元素1和1位置的元素3之和。
双层for循环。
完整代码
class Program
{
static void Main(string[] args)
{
var result = Generate(5);
Console.ReadKey();
}
/// <summary>
/// 118.杨辉三角
/// </summary>
/// <param name="numRows"></param>
/// <returns></returns>
public static IList<IList<int>> Generate(int numRows)
{
IList<IList<int>> result = new List<IList<int>>();
result.Add(new List<int> { 1 });
if (numRows > 1)
{
for (int i = 1; i < numRows; i++)
{
IList<int> list = new List<int>();
for (int j = 0; j <= i; j++)
{
int left = 0;
int right = 0;
if (j - 1 >= 0)
{
left = result[i - 1][j - 1];
}
if (j <= result[i - 1].Count - 1)
{
right = result[i - 1][j];
}
int number = left + right;
list.Add(number);
}
result.Add(list);
}
}
return result;
}
}
以上是关于LeetCode做题笔记第118题:杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode:118.杨辉三角面试题 17.01. 不用加号的加法