LeetCode118. 杨辉三角

通过学习了vector,我们可以通过一些OJ练习题来增强学习vector的使用。

在这里插入图片描述

难度 简单 OJ链接
在这里插入图片描述
首先,杨辉三角其实类似一个二维数组。但是里面的数据是不规则的,第一行一个数据,第二行两个数据,第三行三个数据… …其余空白的都是0,而第一列的数和斜着的数都为1,中间的数据是由左上角的数+右上角的数。

然后,我们看一下这个题目给我们的返回值是什么意思?
在这里插入图片描述
我们应该知道vector< int >的意思是:一个数组里存放的是int类型的数据。
在这里插入图片描述
而vector<vector< int >>的意思是:一个数组里存放的是vector< int >对象,每个对象里是一个数组存放的是int类型的数据。
在这里插入图片描述
这就是这个返回值的意思。那么现在有一个vector<vector< int >>类型的对象vv,那么我们该如何去遍历它呢?
在这里插入图片描述
我们可以这样来遍历。
vv.size()的意思是:vector<vector< int >>里的对象有多少个,也就是二维数组(杨辉三角)的行数。
vv[i]的意思是:每一行的那个管理int的vector。
vv[i].size()的意思是:每个vecto(行)r里有多少个int。
vv[i][j]的意思是:通过两次operator[]的调用,像访问二维数组一样访问数据。访问第i行的,第j个数据。本质上是先访问第i个vector< int >对象,再访问这个对象的第j个int数据。

然后,我们再来写这道题:
在这里插入图片描述
这里,一开始用的是resize函数而不能是reserve函数。这是因为我们先要初始化。如果用的是reserve函数,那么里面的有效值size是0,后面也不能对它进行使用,所以会开辟不出空间。如果我们用的是resize,那么就会默认初始化。

上面这是第一步,当我们把空间初始化都弄好时,就开始弄中间的数。而中间的数=由左上角的数+右上角的数。由于我们之前初始化的时候其它位置都置为1了,现在只需要搞0就行了。
在这里插入图片描述
这种遍历,我们上面也说过了。赋完值之后,我们把定义的这个对象返回就行了。

vv中元素填充完成之后,如下图所示:
在这里插入图片描述
如果,大家觉得这道题对你有帮助。希望大家能够多多点赞。
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学代码的咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值