Pascal's Triangle 2(leetcode java)
2016-01-27 14:26
323 查看
问题描述:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return
Note:
Could you optimize your algorithm to use only O(k) extra space?
问题分析:
第 rowIndex 行有 rowIndex + 1 个元素,给这 rowIndex + 1个元素赋初值 0,
row的第一个元素赋值为1,此时,row的内容为[1,0,0,0,......]
由第 j 行生成第j + 1行,初始为[1,0,0,0,......],逆序将相邻两个元素相加后,赋值给后者
j == 0 时,生成的是 [1,1,0,0,......]
j == 1 时,生成的是 [1,2,1,0,......]
......
j == rowIndex - 1,生成最终结果
代码:
Given an index k, return the kth row of the Pascal's triangle.
For example, given k = 3,
Return
[1,3,3,1].
Note:
Could you optimize your algorithm to use only O(k) extra space?
问题分析:
第 rowIndex 行有 rowIndex + 1 个元素,给这 rowIndex + 1个元素赋初值 0,
row的第一个元素赋值为1,此时,row的内容为[1,0,0,0,......]
由第 j 行生成第j + 1行,初始为[1,0,0,0,......],逆序将相邻两个元素相加后,赋值给后者
j == 0 时,生成的是 [1,1,0,0,......]
j == 1 时,生成的是 [1,2,1,0,......]
......
j == rowIndex - 1,生成最终结果
代码:
public List<Integer> getRow(int rowIndex) { List<Integer> row = new ArrayList<Integer>(); if(rowIndex < 0) return row; // 第 rowIndex 行有 rowIndex + 1 个元素,给这 rowIndex + 1个元素赋初值 0 for(int i = 0; i <= rowIndex; ++i){ row.add(0); } row.set(0, 1); //生成第rowIndex行数据,最小为第0行 //由第 j 行逆序生成第j + 1行,初始为 1 //j == 0 时,生成的是 1 1 //j == 1 时,生成的是 1 2 1 //...... //j == rowIndex - 1,生成最终结果 for(int j = 0; j < rowIndex; ++j){ for(int k = rowIndex - 1; k > 0; --k){ //从最后一个元素开始,逆序计算 row.set(k, row.get(k) + row.get(k - 1)); } } row.set(rowIndex, 1); //给最后一位赋值1 return row; }
相关文章推荐
- Java项目经验——软件工程师成长的关键
- java组合算法应用:购物满减(任意数字组合相加在某个范围内)
- 详细讲解Java中的类加载器
- JAVA敏捷开发环境搭建
- HouseMD, 比BTrace更实用的Java运行诊断工具
- 在MyEclipse中使用maven
- 生成随机数-java工具类
- java继承方法重写权限问题
- 关于spring+springMVC+myBatis的一些基础配置以及整合
- MyBatis3整合Spring3、SpringMVC3
- Java遍历Map对象的四种方式
- volatile关键字作用与内存可见性、指令重排序概述[JAVA]
- Java中,logger.debuge是什么意思?有什么作用?
- JAVA 静态内部类用法
- java获取cpu、内存、硬盘信息
- Java Hex 16进制的 byte String 转换类
- Eclipse插件开发4-SWT布局
- Spring整合Quartz实现动态定时任务
- 在整合springmvc+mybatis+ecache时候报错如下: Another unnamed CacheManager already exists in the same VM.
- Java-正确使用equals和hashCode方法