PascalTriangel II
来源:互联网 发布:短信验证码 java 编辑:程序博客网 时间:2024/05/18 07:58
问题描述:输出帕斯卡三角形的指定行。
解决:
这一题与上一题类似,上一题需要输出整个三角形,这里只需要输出指定的一行k。要求空间复杂度为ok,上一题求出cur行是通过计算pre的元素得到的,
这题因为空间复杂度的要求,只能用cur这一个引用。如果仍然像上一题的做法来做,会出现元素覆盖问题。举例,给[1, 2, 1],算下一行,那么依次该行的变化
过程是[1, 3, 1]->[1, 3, 4]—>[1, 3, 4, 1],显然不对的。这是因为当cur[i]不为首尾元素时,cur[i] = cur[i-1] + cur[i],cur[i+1] = cur[i] + cur[i+1]
此时cur[i]已经是新的值了,cur[i+1]计算出来不正确。但是如果我们从后往前算,cur[i] = cur[i-1] + cur[i],cur[i-1] = cur[i-2] + cur[i-1]。
新计算出的元素cur[i],在计算cur[i-1]时并没有起到作用。保证了每一个元素计算出来都是正确的。
/* * Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3,3,1]. */import java.util.ArrayList;import java.util.List; public class PascalTriangelII { public List<Integer> getRow(int rowIndex) { List<Integer> res = new ArrayList<Integer>(); if(rowIndex < 0) return res; res.add(1); for(int i=1; i<=rowIndex; i++) { //要求出第rowIndex行,需进行rowIndex次操作 for(int j=res.size()-2; j>=0; j--) { res.set(j+1, res.get(j)+res.get(j+1)); } res.add(1); } return res; }}
阅读全文
0 0
- PascalTriangel II
- ii
- ii
- ii
- II
- ii
- Permutations II 排列II
- Probabilistic Robotics ( II.II )
- ASC II
- Part II
- Translations II
- 横线II
- 分手II
- 童话II
- MRP II
- 链接II
- 胡思乱想II
- 智力题II
- dao-service-servlet-jsp构建简易web通讯录(三层开发)知识点1
- ios8对flex部分不兼容问题
- React Native 环境搭建
- Apache 、Nginx 服务资源防盗链
- LeetCode- Longest Palindromic Subsequence
- PascalTriangel II
- Android开发中常见的请求头
- XListView+ViewPager+上拉下拉
- 动态生成bean实体
- HADOOP学习6
- 初识ubuntu(一)
- 任务执行顺序
- springmvc之restful
- Java连接HBase超时解决方法