Leetcode - Pascal's Triangle
2016-04-20 17:17
323 查看
Question
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] ]
Java Code
public List<List<Integer>> generate(int numRows) { List<List<Integer>> triangle = new ArrayList<List<Integer>>(); if(numRows == 0) return triangle; //存储Pascal's Triangle的第一行 triangle.add(new ArrayList<Integer>()); triangle.get(0).add(1); //使用上一行生成下一行 for(int i=1; i < numRows; ++i) { List<Integer> preRow = triangle.get(i-1); List<Integer> newRow = new ArrayList<Integer>(); newRow.add(1); for(int j=1; j < i; ++j) newRow.add(preRow.get(j-1) + preRow.get(j)); newRow.add(1); triangle.add(newRow); } return triangle; }
说明
这里还有一个简化的地方,就是利用杨辉三角的对称性,用上一行生成下一行时,只需要生成左边一半,右边直接复制得到,即//计算得到左边一半 for(int j = 1; j <= i/2; ++j) newRow.add(preRow.get(j-1) + preRow.get(j)); //复制得到右边一半 for(int j = (i - 1)/2; j > 0; --j) newRow.add(newRow.get(j));
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树