[LeetCode] Pascal's Triangle II
2015-07-14 10:53
447 查看
Question:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return
1、题型分类:
2、思路:直接使用公式,第n行 第0个数是1,从第i个数开始一次是 N[i-1]*(n-i)/i ,(n是从0开始)。需要注意的是这里会出现直接采用前面的公式会出现超过Integer.Max_Value的情况,需要先除再乘 除之前需乘上1.0,防止两个整数相除结果取整的情况。
3、时间复杂度:
4、代码:
5、优化:
网上很多朋友的办法,外层循环是从第一层开始利用规则往下计算,直到第N层,内层循环是从第二个数到倒数第二个数,其中利用一个temp代表被取代的数。
6、扩展:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return
[1,3,3,1].
1、题型分类:
2、思路:直接使用公式,第n行 第0个数是1,从第i个数开始一次是 N[i-1]*(n-i)/i ,(n是从0开始)。需要注意的是这里会出现直接采用前面的公式会出现超过Integer.Max_Value的情况,需要先除再乘 除之前需乘上1.0,防止两个整数相除结果取整的情况。
3、时间复杂度:
4、代码:
public List<Integer> getRow(int rowIndex) { if(rowIndex<0) return null; rowIndex+=1; List<Integer> list=new ArrayList<Integer>(); for(int i=0;i<rowIndex;i++) { if(i==0) {list.add(1);continue;} if(Integer.MAX_VALUE/list.get(i-1).intValue()<rowIndex-i) list.add((int)(list.get(i-1).intValue()*1.0/i*(rowIndex-i))); else list.add(list.get(i-1).intValue()*(rowIndex-i)/i); } return list; }
5、优化:
网上很多朋友的办法,外层循环是从第一层开始利用规则往下计算,直到第N层,内层循环是从第二个数到倒数第二个数,其中利用一个temp代表被取代的数。
public class Solution { public List<Integer> getRow(int rowIndex) { if(rowIndex<0) return null; rowIndex+=1; List<Integer> list=new ArrayList<Integer>(); list.add(1); for(int i=1;i<rowIndex;i++) { int temp=1; for(int j=1;j<i;j++) { int tempInner=list.get(j); list.set(j, temp+tempInner); temp=tempInner; } list.add(1); } return list; } }
6、扩展:
相关文章推荐
- Android 在项目中实现百度地图
- Android多线程下安全访问数据库
- 【VB】SQL多条件查询(机房问题)
- Assertion failure in -[UICGColor encodeWithCoder:]
- InputStream用法
- java学习路线分享,让你少走弯路
- Android签名功能的实现
- 技术文档博客集锦
- Tesseract 源码分析
- SQL Server执行计划的理解
- python里的del变量无法立刻释放内存的解决办法
- [solaris]odbc-oracle,简单测试
- su && su - && sudo
- combox绑定枚举和读取枚举
- 3.创建一个20个大小的随机数组,找出这组数组的最大值和最小值, 并且标出最大数和最小值的位置
- 关于WCF服务的使用(非常详细的步骤)
- Python实现查找系统盘中需要找的字符
- 苹果垄断手机市场92%利润 通吃PC市场50%利润
- Android 常用动画之RotateAnimation
- xcode6.1调试的时候有时参数都为nil怎么解决?