博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode算法题-Pascal's Triangle(Java实现)
阅读量:6232 次
发布时间:2019-06-21

本文共 958 字,大约阅读时间需要 3 分钟。

这是悦乐书的第170次更新,第172篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第29题(顺位题号是118)。给定非负整数numRows,生成Pascal三角形的第一个numRows。例如:

输入: 5

输出:

[

[1],

[1,1],

[1,2,1],

[1,3,3,1],

[1,4,6,4,1]

]

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 解题

对于题目的想要表达的意思,下面简单的画下示意图。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NvZGVNYXM=,size_16,color_FFFFFF,t_70
对于一个五层的三角形,每一层的首尾元素都是1,从第三层开始,中间元素为上一层对应下标元素与其前一元素之和,并且每一层的元素都要获取并存放于list中,前一层部分相邻元素之和等于下一层元素。

特殊情况:当输入的numRows小于等于0时,直接返回空list。

public List
> generate(int numRows) { List
> list = new ArrayList
>(); for (int i=0; i < numRows; i++) { List
list2 = new ArrayList
(); for (int j=0; j<=i; j++) { if (j == 0 || j == i) { list2.add(1); } else { list2.add(list.get(i-1).get(j-1)+list.get(i-1).get(j)); } } list.add(list2); } return list;}

上面的解法使用了两层循环,时间复杂度是O(numRows^2),对于此种问题,这已经是最优的时间复杂度了。

03 小结

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

转载于:https://www.cnblogs.com/xiaochuan94/p/9949314.html

你可能感兴趣的文章
cocos2d-iphone之魔塔20层第八部分
查看>>
JSTL 核心标签库 使用
查看>>
安装Robot Framework-Mac
查看>>
mysql 多表 update sql语句总结
查看>>
Redhat 6 升级 openssl-1.0.2m 、openssh-7.6p1 和 ntp-4.2.8p10
查看>>
Spring-boot添加Mybatis
查看>>
一个早期前FB员工是如何搞砸了自己的工作,失去了1亿8千5百万美元
查看>>
在CentOS中安装flashplay插件
查看>>
flexpaper组件中关于隐藏真实的swf 地址下载
查看>>
用easyinstaller安装zookeeper,hadoop,hbase等群集软件
查看>>
Play Scala 开发技巧 - 请求限速
查看>>
PHP rabbitmq producer for yii2
查看>>
管道流操作
查看>>
ubuntu下不能以根用户身份运行 Google Chrome 浏览器
查看>>
angular笔记(ng-repeat,ng-if)使用小技巧
查看>>
PHP网站简单架构 – 单独跑php-fpm
查看>>
你所不知道的传输层
查看>>
数据挖掘-关联分析-Apriori算法Java实现 支持度+置信度
查看>>
OSChina 技术周刊第十一期
查看>>
renren-security轻量级权限框架
查看>>