119. 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,3,1].

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


【思路】

一刷:我们为了满足空间复杂度的要求,我们新建两个ArrayList,一个负责存储上一个Pascal行的结果,一个根据上一个Pascal行得出当前Pascal行的结果,这个过程循环进行。

二刷:ArrayList的操作是比较慢的,这次我们用数组来对结果进行存储。数组保存上一个状态,通过上一个状态计算下一个状态。例如:[1,3,3,1],我们可以从最后一个元素开始,num[i] = num[i] + num[i-1]。最后我们再在末尾补1。这样能大大提高代码的效率。


【java代码一刷】

 public class Solution {
public List<Integer> getRow(int rowIndex) {
List<Integer> prelist = new ArrayList<>();
prelist.add(1);
if(rowIndex <= 0) return prelist;
List<Integer> curlist = new ArrayList<>();
for(int i = 1; i <= rowIndex; i++){
curlist.add(1);
for(int j = 0; j < prelist.size() - 1; j++){
curlist.add(prelist.get(j) + prelist.get(j+1));
}
curlist.add(1);
List<Integer> temp = prelist;
prelist = curlist;
curlist = temp;
curlist.clear();
}
return prelist;
}
}

 


【java代码二刷】

 public class Solution {
public List<Integer> getRow(int rowIndex) {
int[] nums = new int[rowIndex+1];
for(int i = 0; i <= rowIndex; i++) {
for(int j = i; j >= 1; j--)
nums[j] += nums[j-1];
nums[i] = 1;
} List<Integer> res = new ArrayList<>(rowIndex);
for(int num : nums) res.add(num);
return res;
}
}
 

LeetCode OJ 119. Pascal's Triangle II的更多相关文章

  1. 【一天一道LeetCode】#119. Pascal's Triangle II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  2. 【LeetCode】119. Pascal's Triangle II

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

  3. Leetcode No.119 Pascal's Triangle II(c++实现)

    1. 题目 1.1 英文题目 Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal's tria ...

  4. 【LeetCode OJ】Pascal's Triangle II

    Problem Link: http://oj.leetcode.com/problems/pascals-triangle-ii/ Let T[i][j] be the j-th element o ...

  5. leetcode 118. Pascal's Triangle 、119. Pascal's Triangle II 、120. Triangle

    118. Pascal's Triangle 第一种解法:比较麻烦 https://leetcode.com/problems/pascals-triangle/discuss/166279/cpp- ...

  6. 118/119. Pascal's Triangle/II

    原文题目: 118. Pascal's Triangle 119. Pascal's Triangle II 读题: 杨辉三角问题 '''118''' class Solution(object): ...

  7. 119. Pascal's Triangle II@python

    Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note t ...

  8. [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 ...

  9. [LeetCode]题解(python):119 Pascal's Triangle II

    题目来源 https://leetcode.com/problems/pascals-triangle-ii/ Given an index k, return the kth row of the ...

随机推荐

  1. 命令行启动Hololens Emulator,可解决内存不足的问题

    有时候在虚拟机测试时常会出现 内存不足 的情况,导致应用卡顿,调整 /memsize 参数大小: start "HoloLens" "C:\Program Files ( ...

  2. Linux下制作静(动)态库

    关键命令: 动态库制作命令 gcc xxx.c -fPIC -shared -o libxxx.so 静态库制作命令 gcc -c xxx.c ar crv libxxx.a xxx.o 例: //h ...

  3. THINKCMF-NGINX伪静态

    location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/index.php( ...

  4. XML+AJAX

  5. Unity3DGUI:Window

    #pragma strictvar winRect:Rect=Rect(30,100,150,200);var windowShow:boolean=true;function OnGUI () { ...

  6. erase-credentials配置

    转自:Spring Security怎样不让默认的ProviderManager清除密码等信息 <authentication-manager erase-credentials="f ...

  7. [Q]pdfFactory打印机纸张方向设置为横向

    不推荐更改pdfFactory打印机默认纸张方向(默认为横向),更改后可能导致不必要的麻烦(pdfFactory要求所定义的纸张方向与实际的纸张方向需一致,因此若更改为横向,则纸张宽度的定义需大于纸张 ...

  8. 一步步优化JVM二:JVM部署模型和JVM Runtime

    选择JVM部署模型    JVM部署模型的选择总体来说就是决定应用是部署在单个JVM实例还是多个JVM实例上(这里简单举例说明一下JVM实例,比如:我们常用eclipse开发,启动一个eclipse就 ...

  9. 移动互联网app

    移动互联网app 2 App测试点 2.1安全测试 2.1.1软件权限 1隐私泄露风险:包括访问手机信息.访问联系人信息等 2对App的输入有效性校验.认证.授权.敏感数据存储.数据加密等方面进行检测 ...

  10. Linux 图形系统界面 和 文本系统和界面切换

    本着,有好轮子就不要乱造的原则 下面是原文连接,来自三石兄的博客 http://www.cnblogs.com/deepstone/p/3344430.html 1.默认开机进入文本模式 如果想让开机 ...