题目:Pascal三角的变形,要求只用O(K)的额外空间。

思路:由于Pascal三角中,tri[n][i] = tri[n - 1][i] + tri[n-1][i-1],(通常情况下)

如果已经获得K = 2时的数组:

1 2 1

1、 普通思路,从前部开始,想要生成下一行,在不能申请其它辅助空间时,

1 1 1

在生成了红色的3后发现,第二个3已经无法生成了。

2、那么,考虑从数组尾部开始考虑,

1 2 1

在生成了红色3后,还能够继续往下生成,2并没有被覆盖,能够顺利得到K = 3时的结果:

1 3 3 1

OK,此题的解题思路,即从上一行数组的尾部开始,生成下一行数组的每一个数据,这样既不会覆盖,也能够满足O(K)的空间限制。

代码:

 public List<Integer> getRow(int rowIndex) {

         List<Integer> result = new ArrayList<Integer>();
for(int i = 0 ; i <= rowIndex ; i++){
result.add(1);
}
if(rowIndex == 0 || rowIndex == 1) return result; int help = 2;
while(help <= rowIndex){
for(int i = help - 1 ; i > 0 ; i--){
result.set(i , result.get(i) + result.get(i - 1));
}
help++;
}
return result;
}

[leetcode]_Pascal's Triangle II的更多相关文章

  1. 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4

    当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...

  2. LeetCode: Pascal's Triangle II 解题报告

    Pascal's Triangle II Total Accepted: 19384 Total Submissions: 63446 My Submissions Question Solution ...

  3. [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, ...

  4. [leetcode]Pascal's Triangle II @ Python

    原题地址:https://oj.leetcode.com/problems/pascals-triangle-ii/ 题意: Given an index k, return the kth row ...

  5. LeetCode - Pascal's Triangle II

    题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return ...

  6. LeetCode——Pascal's Triangle II

    Description: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3 ...

  7. [leetcode]_Pascal's Triangle

    题目:题目本身不存在问题,生成Pascal三角. 注意: ArrayList的使用: 1.ArrayList申请二维数组. ArrayList<ArrayList<Integer>& ...

  8. LeetCode Pascal's Triangle II (杨辉三角)

    题意:给出杨辉三角的层数k,返回最后一层.k=0时就是只有一个数字1. 思路:滚动数组计算前一半出来,返回时再复制另一半.简单但是每一句都挺长的. 0ms的版本: class Solution { p ...

  9. leetcode:Pascal's Triangle II【Python版】

    1.将tri初始化为[1],当rowIndex=0时,return的结果是:1,而题目要求应该是:[1],故将tri初始化为[[1]],返回结果设置为tri[0]即可满足要求: 2.最开始第二层循环是 ...

随机推荐

  1. delphi 调用百度地图WEBSERVICE转换GPS坐标 转

    http://www.cnblogs.com/happyhills/p/3789864.html   百度地图的API说明 使用方法 第一步,申请密钥(ak),作为访问服务的依据: 第二步,按照请求参 ...

  2. [SQL] 不合并重复数据 union all

    select * from A union select * from B --不合并重复行 select * from A union all select * from B --如果要对字段进行排 ...

  3. VS2010 Win32项目的源码位置设置

    在VS2010中,我们可以创建一个Win32项目用来编辑C或CPP代码,项目建好后我们向项目文件夹添加代码文件,并调试能正常运行. 有时候我们会发现项目目录下没有源文件,这种情况下,可以通过设置“输出 ...

  4. 利用Scanner键盘输入

    Scanner不在java.lang.*包中,故必须import包java.util.Scanner.输入流(InputStream)为System.in 方法如下:Scanner s= new Sc ...

  5. android下拉菜单 spinner 学习

    首先看一下继承关系: public class Spinner extends AbsSpinner implements DialogInterface.OnClickListener Class ...

  6. Fiddler抓包工具的使用

    下载 自行去官网下载 http://www.telerik.com/fiddler 配置Fiddler 1.打开Fiddler, Tools-> Fiddler Options -> HT ...

  7. Orchard官方文档翻译(九) 新增并管理媒体资源

    原文地址:http://docs.orchardproject.net/Documentation/Adding-and-managing-media-content 想要查看文档目录请用力点击这里 ...

  8. Microsoft Visual C++ 2010(86) Redistributable不能安装完美解决

    见http://jingyan.baidu.com/article/9c69d48f41aa6313c9024ebe.html 1. 去mircosoft下载安装包(vcredist_x64.exe) ...

  9. php get传递数据

    url:?goods[]=924&goods[]=967&goods[]=993 <?php  if($_GET){            print_r($_GET);  } ...

  10. spring HibernateValidator 验证 子类不起作用

    spring HibernateValidator 验证 子类不起作用,在要验证的子类前加上@Valid即可. public class UserInfo { private int Id; @Val ...