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

LeetCode118. 杨辉三角

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

LeetCode118. 杨辉三角

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

难度 简单 OJ链接

首先,杨辉三角其实类似一个二维数组。但是里面的数据是不规则的,第一行一个数据,第二行两个数据,第三行三个数据… …其余空白的都是0,而第一列的数和斜着的数都为1,中间的数据是由左上角的数+右上角的数。

然后,我们看一下这个题目给我们的返回值是什么意思?

我们应该知道vector< int >的意思是:一个数组里存放的是int类型的数据。

而vector>的意思是:一个数组里存放的是vector< int >对象,每个对象里是一个数组存放的是int类型的数据。

这就是这个返回值的意思。那么现在有一个vector>类型的对象vv,那么我们该如何去遍历它呢?

我们可以这样来遍历。
vv.size()的意思是:vector>里的对象有多少个,也就是二维数组(杨辉三角)的行数。
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就行了。

这种遍历,我们上面也说过了。赋完值之后,我们把定义的这个对象返回就行了。

如果,大家觉得这道题对你有帮助。希望大家能够多多点赞。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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