博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pascal's Triangle II(帕斯卡三角形)
阅读量:5289 次
发布时间:2019-06-14

本文共 1550 字,大约阅读时间需要 5 分钟。

Given an index k, return the kth row of the Pascal's triangle.

For example, given k = 3,

Return [1,3,3,1].

Note:

Could you optimize your algorithm to use only O(k) extra space?

杨辉三角形,西方称为帕斯卡三角形

    杨辉三角
1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。
2、第n行的数字个数为n个。
3、第n行数字和为2^(n-1)。
4、每个数字等于上一行的左右两个数字之和。可用此性质写出整个帕斯卡三角形。
5、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第2n个斐波那契数。将第2n行第2个数,跟第2n+1行第4个数、第2n+2行第6个数……这些数之和是第2n-1个斐波那契数。
6、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。

7.两个未知数和的n次方运算后的各项系数依次为杨辉三角的第n行。

把每一行看做一个矩阵或者向量,则第n行比第n-1行多一个元素,且每一行的第一个元素都等于1,最后一个元素等于上一行的最后一个元素,中间的元素等于上一行的对应下标的前一个加上相同下标的元素和。

C语言版:

int *getRow(int rowIndex) {    int * a;    a=(int *)malloc(sizeof(int)*(rowIndex+1));    a[0]=1;         for(int i = 1; i <= rowIndex; i++)             for(int j = i; j >= 0; j--)                 if (j == i)                     a[j] = a[j-1];                 else if (j == 0)                     a[j] = a[j];                 else                     a[j] = a[j-1] + a[j];         return a;}

C++版:

class Solution {public:    vector
getRow(int rowIndex) { vector
a(rowIndex + 1); a[0] = 1; for(int i = 1; i <= rowIndex; i++) for(int j = i; j >= 0; j--) if (j == i) a[j] = a[j-1]; else if (j == 0) a[j] = a[j]; else a[j] = a[j-1] + a[j]; return a; }};

 

转载于:https://www.cnblogs.com/zhhc/p/4346735.html

你可能感兴趣的文章
[Java]Jersey Spring Integration Demo
查看>>
left & double spindle difference
查看>>
apue3.e (基于maxos 10.9)
查看>>
网站测试之一压力测试
查看>>
vue脚手架 && 实例
查看>>
npm全局安装和局部文件安装区别
查看>>
Java虚拟机基础
查看>>
Java反射机制demo(六)—获得并操作一个类的属性
查看>>
[译]C语言实现一个简易的Hash table(6)
查看>>
gogs搭建属于自己的git网站
查看>>
查看oracle数据库的连接数以及用户
查看>>
简单几行js实现tab选项切换效果
查看>>
关于更改滚动条样式
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
[转帖] Oracle 关闭自动收集统计信息
查看>>
TCP/IP协议
查看>>
三.野指针和free
查看>>
VIO的Bundle Adjustment推导
查看>>
POJ 1182 食物链(带权并查集)
查看>>