博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】Pascal's Triangle I & II (middle)
阅读量:6300 次
发布时间:2019-06-22

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

Given numRows, generate the first numRows of Pascal's triangle.

For example, given numRows = 5,

Return

[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1,4,6,4,1]]

 

思路:杨辉三角,直接按规律生成即可

vector
> generate(int numRows) { vector
> ans; for(int i = 0; i < numRows; i++) { vector
v(i + 1, 1); for(int j = 1; j < i; j++) { v[j] = ans[i - 1][j - 1] + ans[i - 1][j]; } ans.push_back(v); } return ans; }

 

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?

思路:

要靠数学公式了,设杨辉三角的最顶层为第0行,每行的第一个数字是第0个,则

第 i 行第 j 个元素的计算为:C(i, j) =  (i)! / (j)! * (i - j)! 

那么第 i 行第 j 个元素和它前一个元素的关系是  ans[i][j] = ans[i][j - 1] * (i - j + 1) / j; //这里要注意不要越界

vector
getRow(int rowIndex) { vector
ans(rowIndex + 1, 1); ans[rowIndex - 1] = ans[1] = rowIndex; for(int i = 2; i < rowIndex / 2 + 1; i++) { ans[rowIndex - i] = ans[i] = (long long)ans[i - 1] * (rowIndex - i + 1) / i; //用long long防止越界 同时利用杨辉三角的对称性减少一半的计算量 } return ans; }

 

转载地址:http://iygta.baihongyu.com/

你可能感兴趣的文章
Java并发编程笔记之基础总结(一)
查看>>
docker一键部署hadoop心得(一)
查看>>
存储产业进入闪存时代—2016中国闪存峰会在京召开
查看>>
Spring+SpringMVC+Hibernate简单整合(转)
查看>>
Zulip 2.0.3 发布,功能强大的群组聊天软件
查看>>
Maven更新POM中的JDK版本(比如更新为JDK1.8)
查看>>
笨办法学 Python · 续 第七部分:大作业
查看>>
区块链应用 | 不要否认区块链十年来的进展,它已经改变了很多事情
查看>>
沃•云总机以互联网+SaaS模式助力河南房产行业信息化
查看>>
数据结构思维 第七章 到达哲学
查看>>
MAC上快速调出终端的设置(保持和Windows的操作一致)
查看>>
SQL更新id段之间的字段
查看>>
阿里云ECS,突发性能实例t5购买参考和使用建议
查看>>
.NET轻量级ORM框架Dapper入门精通
查看>>
量子卫星是何物?快戳进来涨姿势!
查看>>
AI诊断又有新算法,让人们提前10年知道自己是否会老年痴呆
查看>>
商用无人机被“锁”住了螺旋桨,送货机器人却已经开始满地跑了
查看>>
Java的对象和类
查看>>
格式化字符串漏洞利用 一、引言
查看>>
基于epoll封装的事件回调miniserver
查看>>