LeetCode - 118. Pascal's Triangle
来源:互联网 发布:希腊失业率数据 编辑:程序博客网 时间:2024/05/17 02:15
这道题目是有关三角形的题目,因此可能会涉及到二维数组的问题,在处理这样的三角形问题的时候,有一个比较好的方法就是将三角形当作半个矩阵来看,这样可以比较方便地理清元素下标之间的关系。比如题目中给出的例子是这样:
[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]我们可以将它这样来对待:
[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]这样就可以看出元素下标之间的关系:对于中间部分的某个元素a[i][j] = a[i][j - 1] + a[i - 1][j - 1];而前两行,对角线和第一列的元素均为1。一开始我也是按照这种方式来做的,但是这样就分了比较多的情况,处理起来很麻烦,有一个更简单的判断方式就是当i == 0 || j == 0 || j == i的时候,元素为1,这样就可以将所有的内容统一的一个循环里进行计算。另外还有一个需要注意的地方,在我们找规律的时候,元素的坐标是[列][行],而在我们存储元素的ArrayList<List<Integer>>中,第一次get得到的是行,第二次get得到的是列,也就是说我们在其中找元素的时候按照[行][列]的方式,这一点要仔细考虑到。代码如下:
public class Solution{ public List<List<Integer>> generate(int numRows){ List<List<Integer>> triangle = new ArrayList<List<Integer>>(); // Corner case if(numRows < 1) return triangle; for(int i = 0; i < numRows; i++){ List<Integer> level = new ArrayList<Integer>(); for(int j = 0; j <= i; j++){ if(i == 0 || j == 0 || i == j){ level.add(1); }else{ level.add(triangle.get(i - 1).get(j - 1) + triangle.get(i - 1).get(j)); } } triangle.add(level); } return triangle; }}
知识点
1. List<List<Integer>>的实例化方式是ArrayList<List<Interger>>()或者是ArrayList<>();而不是ArrayList<ArrayList<Integer>>()
2. 如果使用ArrayList<List<Interger>>()存储二维的数组,那么访问元素的方式是get(行).get(列)
0 0
- LeetCode 118. Pascal's Triangle
- [LeetCode]118.Pascal's Triangle
- 【LeetCode】118.Pascal's Triangle
- [Leetcode] 118. Pascal's Triangle
- 【leetcode】118. Pascal's Triangle
- 【Leetcode】118. Pascal's Triangle
- 118. Pascal's Triangle LeetCode
- 【LeetCode】118. Pascal's Triangle
- [LeetCode]118. Pascal's Triangle
- Leetcode 118. Pascal's Triangle
- LeetCode *** 118. Pascal's Triangle
- leetcode 118. Pascal's Triangle
- LeetCode 118. Pascal's Triangle
- leetcode-118. Pascal's Triangle
- 118.[Leetcode]Pascal's Triangle
- LeetCode 118. Pascal's Triangle
- 【leetcode】118. Pascal's Triangle
- LeetCode - 118. Pascal's Triangle
- C#/JAVA/PHP 互通DES加解密算法(ECB模式支持8位)
- Problem-F
- 字典树(Trie树)算法
- leetcode 24. Swap Nodes in Pairs
- jQuery 遍历函数
- LeetCode - 118. Pascal's Triangle
- GPGGA数据解析
- POJ 3630 Phone List (字典树)
- java常用的发送http请求的工具方法
- 【Linux】shell调用Java程序main方法通过crontab定时执行
- Sierpinski三角形
- ARC原理
- [LC238] Product of Array Except Self
- SAP ABAP ALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例