Pascal's Triangle & Pascal's Triangle II
来源:互联网 发布:没见过如此敬业的淘宝 编辑:程序博客网 时间:2024/05/17 03:55
Pascal's Triangle
杨辉三角,或者叫帕斯卡三角(不确定是不是这么叫),给一个数,返回该数值的杨辉三角的二位数组。
我的思路:
1 题目不是很难,用两个一维数组和一个二维数组(二维是必须的,要返回数据,实际上可以只用一个一维的数组,后面讲解)。只要杨辉三角的构造分析清楚。每层的第一个数不变,下一层的数等于上一层对应位置的上一个和本身的和。用公式表示up表示上一层的数据,down表示下一层数据。
down[i] = up[i] + up[i - 1]
代码如下:
vector<vector<int>>answer; vector<int> up, down; if (numRows < 1) return answer; up.push_back(1); answer.push_back(up); if (numRows == 1) return answer; for (int i = 1; i < numRows; i++) { for (int j = 0; j <= i; j++) { if (j == 0 || j == i) down.push_back(1); else down.push_back(up[j -1] + up[j]); } answer.push_back(down); up = down; down.clear(); } return answer;
Pascal's Triangle II
杨辉三角变形,给一个数,返回该层的数据。这里的层数从0开始。题目下面的优化目标是额外的数据空间是O(k)。
我的思路:
1 这里可以把上排和下排的数据写放在一个数组中,如果还是和上面一样,那么下排新的数据会把旧的数据覆盖,所以循环中从后面开始计数。
代码如下:
for (int i = 1; i < rowIndex; i++) { for (int j = i; j > 0; j--) { if (j == i) up.push_back(1); else up[j] = up[j -1] + up[j]; } }
这里只贴出关键的代码,其他的和上题代码差别不大。
今天两题和数学公式有那么一些些联系,分析好数据变化情况,依照公式来编写代码,思维清晰。
0 0
- Pascal's Triangle、Pascal's Triangle II
- Pascal's Triangle , Pascal's Triangle II
- Pascal's Triangle & Pascal's Triangle II
- Pascal's Triangle && Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- Pascal's Triangle II
- 利用VelocityTracker监控对触摸的速度跟踪
- Web视觉设计:网站的门面
- linux中的fork函数到底做了什么事
- EDraw 图示制作专家 流程图
- SQL Server角色(复习SQL Server 十)
- Pascal's Triangle & Pascal's Triangle II
- 深入剖析SolrCloud(二)
- C语言实现BMP格式图片的读写
- ArcGIS教程:任务助手管理器基本词汇
- Android源码目录结构详解
- 记第一次区域赛--鞍山之行
- linux系统编程——字符串操作函数
- shell中test命令用法详解
- Java入门类的大概轮廓整理