LeetCode-118:Pascal's Triangle (生成指定行数的杨辉三角)
来源:互联网 发布:java编程入门视频 编辑:程序博客网 时间:2024/05/22 16:41
Question
Given numRows, generate the first numRows of Pascal’s triangle.
For example:
given numRows = 5Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]
Idea
给定行数,生成指定行数的Pascal’s triangle(又称,杨辉三角)。
直接使用Pascal三角的生成方式进行解题.
Java- 使用
ArrayList<List<Integer>>
结构存储将要返回的Pascal三角的所有行; - 使用
ArrayList<Integer>
结果存储单行.
Python
- 使用Python中的list存储Pascal三角,和Java的结构相同。
- 使用
Code
ArrayList—Java
public class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> allrows = new ArrayList<List<Integer>>(); ArrayList<Integer> row = new ArrayList<Integer>(); for (int i=0; i<numRows; i++){ row.add(0,1); for(int j=1; j<row.size()-1;j++){ row.set(j, row.get(j)+row.get(j+1)); } allrows.add(new ArrayList<Integer>(row)); } return allrows; }}
生成Pascal三角主要包括三个过程:
- 首先生成行,利用ArrayList的add()方法,对首位添1—
row.add(0,1)
; - 对从第三行开始的行,利用已经生成好的行(这里相当于是上一行元素)进行相应元素的替换,利用set()方法;
- 将生成的行添加到Pascal三角的ArrayList
<List<Integer>>
结构中.
List—Python
class Solution(object): def generate(self, numRows): """ :type numRows: int :rtype: List[List[int]] """ L = [[1]] if numRows < 1: return [] if numRows == 1: return L i = 1 while i < numRows: L.append([sum(res) for res in zip([0]+L[i-1],L[i-1]+[0])]) i = i + 1 return L
- 通过观察Pascal三角的结构,从第三行开始,其每一行的list,等于前一行的list分别在首位添1和在末位添1对应位相加所得的结果;
- 这里使用Python内建函数zip()对两个list进行对应位置的组合相加;
- 利用Python编写的该方法目前在执行时间上耗费较大,LeetCode目前运行时间:85ms,3.13%的beats率。
阅读全文
0 0
- LeetCode-118:Pascal's Triangle (生成指定行数的杨辉三角)
- 杨辉三角生成 Pascal's Triangle
- Pascal's Triangle -- 生成杨辉三角
- 【LeetCode】Pascal's Triangle (杨辉三角)
- 【LeetCode】Pascal's Triangle (杨辉三角)
- (LeetCode)Pascal's Triangle --- 杨辉三角
- LeetCode-118、119. Pascal's Triangle (JAVA)杨辉三角
- Pascal's Triangle II 输入一个整数,输出该整数对应行数的杨辉三角
- LeetCode-119:Pascal's Triangle II (返回杨辉三角指定行)
- 【LeetCode】Pascal's Triangle II (杨辉三角)
- LeetCode Pascal's Triangle 打印杨辉三角
- LeetCode | Pascal's Triangle(杨辉三角)
- [LeetCode]-Pascal's Triangle I&II 杨辉三角问题
- LeetCode OJ 之 Pascal's Triangle(杨辉三角)
- [leetcode][array]Pascal's Triangle杨辉三角
- LeetCode (13) Pascal's Triangle (杨辉三角 )
- LeetCode Pascal's Triangle 杨辉三角 Java
- Leetcode - Array - 118. Pascal's Triangle(杨辉三角)
- Adapter条目点击,跳转到新的Activity,获取到值之后回显到adapter 条目中的某个控件中去
- 关于在RecyclerView中使用UniversalImageLoader加载图片刷新数据时引起的闪烁问题
- 产品上市之路
- Android测试开发相关知识
- 常用排序算法归纳
- LeetCode-118:Pascal's Triangle (生成指定行数的杨辉三角)
- 抽象类和接口的区别
- 关于NoSQL
- tomcat调优
- Android 图片选择 图册中图片选择
- 【bzoj4872】[Shoi2017]分手是祝愿 数论+期望dp
- MySQL中关于JDBC
- 进程与线程的一个简单解释---阮一峰的网络日志
- android开发笔记之内存泄漏检测工具leakcanary