栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode·杨辉三角题解(C++)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode·杨辉三角题解(C++)

LeetCode·杨辉三角解题报告(C++)
  • 目录
  • 118.杨辉三角
    • 题目描述
    • 原题链接
    • 思路点拨
    • 源码解析
  • 119.杨辉三角2
    • 题目描述
    • 原题链接
    • 思路点拨
    • 源码解析

目录 118.杨辉三角 题目描述

原题链接

118.杨辉三角

思路点拨

观察杨辉三角,我们很容易发现以下三点:

1.杨辉三角每行的元素个数和当前行数相等。
2.每行的第一个和最后一个元素都是 1。
3.每行除第一个元素和最后一个元素外,其余的元素都是上一行左右两元素的和。

源码解析
class Solution {
public:
    vector> generate(int numRows) {
        //利用vector容器在堆区申请一个二维数组,用于存储杨辉三角
        vector> ret(numRows);
        for(int i=0;i rows(i+1);//申请i+1个空间的一维数组
            rows[0]=1;//每行第一个为1
            rows[i]=1;//每行最后一个为1
            for(int j=1;j 
119.杨辉三角2 
题目描述 

原题链接

杨辉三角2

思路点拨

方法一:写完上题再写这题的话,我们可以讨个巧,把上题代码复制过来,改一下参数,最后返回杨辉三角的最后一行便可。

方法二:首先我们如果知道杨辉三角某一行,我们便很容易根据这一行来得到下一行。由此,我们利用两个数组,一个数组存储杨辉三角当前行,另一个存储当前行的上一行。两个数组循环往复,可以得到杨辉三角的第n行。

源码解析

法一:

class Solution {   //这里没什么好说的,和上一题差别不大
public:
    vector getRow(int rowIndex) {
        vector> ret(rowIndex+1);//rowIndex从0开始的,所以这里+1
        for(int i=0;i rows(i+1);
            rows[0]=1;
            rows[i]=1;
            for(int j=1;j 

法二:

class Solution {
public:
    vector getRow(int rowIndex) {
        vector row1;//用于存储杨辉三角上一行
        for(int i=0;i row2(i+1);//用于存储杨辉三角当前行
            row2[0]=row2[i]=1;//第一个元素和最后一个元素为1
            for(int j=1;j
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/353165.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号