您的位置:首页 > 其它

LeetCode Pascal's Triangle

2016-01-05 17:01 204 查看
原题链接在这里:https://leetcode.com/problems/pascals-triangle/

每一行cur都是前一行pre生成出来的,从第三行开始除了首末加"1"外还需要把pre的每两个相邻的和加到cur里。

Time Complexity: O(1 + 2 + 3 + 4... + n) = O(n^2). Space: O(1). 只需要二维数组来存储结果,不需要额外空间。

AC Java:

public class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if(numRows == 0){
return res;
}

List<Integer> pre = new ArrayList<Integer>();
pre.add(1);
res.add(pre);

for(int i = 0; i<numRows-1; i++){
List<Integer> cur = new ArrayList<Integer>();
cur.add(1); //首部加第一个1
for(int j = 1; j<pre.size(); j++){
//第三行才会进入此循环
cur.add(pre.get(j-1) + pre.get(j));
}
cur.add(1); //末尾加最后一个1
res.add(cur);
pre = cur;
}
return res;
}
}


跟上一道Pascal's Triangle II
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: