leetcode-Pascal's Triangle(I、II)
2016-06-06 08:10
411 查看
Problems:
(1)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]
]
(2)Given an index k, return the kth row of the Pascal’s triangle.
For example, given k = 3,
Return [1,3,3,1].
Solution:
(1)其实这个问题并不难,listAll中包含listOne,在求该个listOne的时候需要调用前一个listOne.
(2) 其实第一个问题做出来了,这个问题的思路和第一个一样。
不同的是,这里需要单独用一个list保存上一个数据。
(1)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]
]
(2)Given an index k, return the kth row of the Pascal’s triangle.
For example, given k = 3,
Return [1,3,3,1].
Solution:
(1)其实这个问题并不难,listAll中包含listOne,在求该个listOne的时候需要调用前一个listOne.
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> listAll = new ArrayList<List<Integer>>(); if(numRows == 0) return listAll; List<Integer> listOne = new ArrayList<Integer>(); listOne.add(1); listAll.add(one); for(int i = 1 ; i < numRows ; i++){ List<Integer> newlist = new ArrayList<Integer>(); newlist.add(1); for(int j = 1 ; j < i ; j++){ newlist.add(j,listAll.get(i-1).get(j-1)+listAll.get(i-1).get(j)); } newlist.add(1); listAll.add(i,newlist); } return listAll; } }
***但是我犯了一个非常难以找出来的错误,发出来与大家共享。我初始化了一个公用listOne,在for循环中,每次都清空listOne,也就是listOne.clear(),然后再放下一组数据。 注意,这样做会影响所有跟listOne有关的变量。比如listAll中存储的listOne也会被清空。所以不要轻易用clear()命令。*** 后来改成在for循环中,每次新定义一个newlist,这样的话就不会对前一个newlist造成影响,更不会影响listAll这个list了。
(2) 其实第一个问题做出来了,这个问题的思路和第一个一样。
不同的是,这里需要单独用一个list保存上一个数据。
public class Solution { public List<Integer> getRow(int rowIndex) { List<Integer> one = new ArrayList<Integer>(); one.add(1); //第0行 if(rowIndex == 0) return one; //从第1行开始 for(int i = 1 ; i <= rowIndex ; i++){ List<Integer> newlist = new ArrayList<Integer>(); newlist.add(1); for(int j = 1 ; j < i ; j++){ newlist.add(j,one.get(j-1)+one.get(j)); } newlist.add(1); one = newlist; } return one; } }
相关文章推荐
- 新一代 Tor发布,它牛在哪里?
- nginx
- ContentProvider
- Android基础Layout介绍
- Java集合类:AbstractCollection源码解析
- Cocoa中层(layer)坐标系的极简理解
- Cocoa中层(layer)坐标系的极简理解
- Cocoa中层(layer)坐标系的极简理解
- 类目-延展-协议
- HTTP请求流程介绍
- 匿名类,迭代器,WindowAdapter,Point,MouseAdapter,paint
- adg数据文件无法创建问题
- 访问限制:由于对必需的库 C:\Program Files\Java\jre1.8.0_73\lib\rt.jar 具有一定限制,因此无法访问类型 CachedRowSetImpl
- Android UI设计之<十>自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
- iOS关于使用NSURLSession进行大文件下载以及断点下载
- MySQL高速缓存启动方法及参数详解(query_cache_size)
- 非比较排序
- Android Scroller大揭秘
- 第二期冲刺每日站立会议——20160606
- Android——数据库相关(课堂整理)