LeetCode Pascal's Triangle II (杨辉三角)
题意:给出杨辉三角的层数k,返回最后一层。k=0时就是只有一个数字1。
思路:滚动数组计算前一半出来,返回时再复制另一半。简单但是每一句都挺长的。
0ms的版本:
class Solution {
public:
vector<int> getRow(int rowIndex) {
if(rowIndex==) return vector<int>(,); //0和1特殊处理
if(rowIndex==) return vector<int>(,);
vector<int> ans[];
ans[].push_back(); //只需要处理一半,另一半在返回时复制。
for(int i=; i<=rowIndex; i++)
{
ans[~i&].clear(); //滚动数组
ans[~i&].push_back(); //这是必须的
int j=;
for(; j<ans[i&].size(); j++) ans[~i&].push_back( ans[i&][j-]+ans[i&][j]); if(i%==) ans[~i&].push_back( ans[i&][j-]+ans[i&][j-] ); //k为偶数时,里面有奇数个呢。
} ans[rowIndex&].clear();
ans[rowIndex&].insert( ans[rowIndex&].end(),ans[~rowIndex&].begin(), ans[~rowIndex&].end() ); if(!(rowIndex&))
ans[rowIndex&].insert( ans[rowIndex&].end(),ans[~rowIndex&].rbegin()+, ans[~rowIndex&].rend() );//总数为奇数个,最后1个不要复制进去。
else
ans[rowIndex&].insert( ans[rowIndex&].end(), ans[~rowIndex&].rbegin(), ans[~rowIndex&].rend() );//偶数个,全复制。
return ans[rowIndex&];
}
};
AC代码
简洁但4ms的版本:
class Solution {
public:
vector<int> getRow(int rowIndex) {
vector<int> ans(rowIndex+,);
for(int i=; i<rowIndex; i++) //正在产生第i+2行。
{
for(int j=i; j>; j--) //必须从右开始,不然前面行就被覆盖了。
{
ans[j]+=ans[j-];
}
}
return ans;
}
};
AC代码
LeetCode Pascal's Triangle II (杨辉三角)的更多相关文章
- [LeetCode] Pascal's Triangle II 杨辉三角之二
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- [LeetCode] 119. Pascal's Triangle II 杨辉三角之二
Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...
- [LeetCode] 119. Pascal's Triangle II 杨辉三角 II
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- Leetcode#118. Pascal's Triangle(杨辉三角)
题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], [1,2, ...
- LeetCode 118. Pascal's Triangle (杨辉三角)
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- 每天一道LeetCode--118. Pascal's Triangle(杨辉三角)
Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5,Retur ...
- LeetCode(119):杨辉三角 II
Easy! 题目描述: 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 3 输出: [1,3,3,1] 进阶: ...
- LeetCode: Pascal's Triangle II 解题报告
Pascal's Triangle II Total Accepted: 19384 Total Submissions: 63446 My Submissions Question Solution ...
- 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4
当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...
随机推荐
- 如何在eclipse中配置Selenium
1, Install python 33.(Python 27也可以) 2, Setup Selenium If you did not install Easy_install module, yo ...
- python中文件的复制
python中文件的复制 python的os模块有很多文件目录相关的函数,但没有提供直接复制文件的函数,当然可以通过边都边写的方式复制文件.想要直接复制文件可以通过shutil模块 shutil模块是 ...
- asp.net mvc Ajax.BeginForm不能异步刷新,或转到新页面,或页面还是刷新了,的原因(或解决办法)(转)
昨天搞了一下午的Ajax.BeginForm都没能实现异步刷新,一直将返回的数据提交到新的页面,在网上搜了n多方法都不行,问了n多人都没能搞定,今天大一早,就意外的被我发现了问题所在. 布局页: &l ...
- Jquery Highcharts 选项配置 说明文档
Highcharts提供大量的选项配置参数,您可以轻松定制符合用户要求的图表,下面为Highcharts常用的最核心的参数选项配置. Chart:图表区选项 Chart图表区选项用于设置图表区相关属性 ...
- [转]用Python做一个自动生成读表代码的小脚本
写在开始(本片文章不是写给小白的,至少你应该知道一些常识!) 大家在Unity开发中,肯定会把一些数据放到配置文件中,尤其是大一点的项目,每次开发一个新功能的时候,都要重复的写那些读表代码.非常烦.来 ...
- 1195: [HNOI2006]最短母串 - BZOJ
Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串.Input 第一行是一个正整数n(n<=12), ...
- C#中 Thread.Sleep精度问题
Thread.Sleep的精度默认在15ms左右,如果需要类似 Thread.Sleep(1)的精细控制,需要调用特定的平台API实现 [DllImport("winmm.dll" ...
- 【数学/扩展欧几里得/线性求逆元】[Sdoi2008]沙拉公主的困惑
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- 如何把由js生成的内容水平居中?
一.问题来源 如右侧的微博关注组件,直接用div的align居中没效果,我就开始百度了.即在<div> <script>.....</script> </d ...
- [转载]C#设置开机启动
原理就是在注册表启动项里添加一项.路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run或者直接:运行->regedit找到这个路径添加一项. usin ...