leetcode 119.Pascal's Triangle II-杨辉三角形
2016-04-23 19:55
369 查看
原题链接:Pascal's Triangle II
【思路】
与 leetcode: Pascal's Triangle | Java最短代码实现 不同的是,本题只需要返回一行,并且要求空间复杂度为超过 O(k),我们将每一行的结果存放在
result 结果集中,一行一行地更新:
cases passed. Runtime: 3 ms Your runtime beats 21.02% of javasubmissions.
【优化】
我们也可以直接根据 rowIndex 推出那一行的结果,而不需要根据前一行进行推导:
cases passed. Runtime: 1 ms Your runtime beats 84.70% of javasubmissions.
【思路】
与 leetcode: Pascal's Triangle | Java最短代码实现 不同的是,本题只需要返回一行,并且要求空间复杂度为超过 O(k),我们将每一行的结果存放在
result 结果集中,一行一行地更新:
public List<Integer> getRow(int rowIndex) { List<Integer> result = new ArrayList<Integer>(); result.add(1); for (int i = 0; i < rowIndex; i++) { //进行 rowIndex - 1 次(hang)更新 for (int j = i; j > 0; j--) //利用本行的结果,更新下一行的结果 result.set(j, result.get(j) + result.get(j - 1)); //下一行的第 j 个元素为上一行的第 j - 1 和第 j 个元素的和 result.add(1); } return result; }34 / 34 test
cases passed. Runtime: 3 ms Your runtime beats 21.02% of javasubmissions.
【优化】
我们也可以直接根据 rowIndex 推出那一行的结果,而不需要根据前一行进行推导:
public List<Integer> getRow(int rowIndex) { List<Integer> ans = new ArrayList(); ans.add(1); for(int i = 1; i <= rowIndex; i++) ans.add((int)(Math.round(ans.get(i - 1) * ((double)(rowIndex - i + 1) / i)))); return ans; }34 / 34 test
cases passed. Runtime: 1 ms Your runtime beats 84.70% of javasubmissions.
相关文章推荐
- 数组足够大加零声明char*
- 第八周作业
- UESTC 1215 (思维题 旋转)
- Node.js缓冲器
- 输入一个字符串,计算字符串中子串出现的次数
- 个人工作总结5
- 修改textField的placeholder的字体颜色、大小
- Tomcat项目部署方式
- 关于用ObjectInputStream遍历读取文件中的对象,如何判断到达文件末尾
- 数据挖掘工作指南(1)
- pickle序列化
- iOS 拨打电话三种方式总结
- 网络互联
- 在Linux中安装sqldeveloper
- 网络编程_简单客户端和服务器实现
- Java enum的用法详解
- Node.js开发入门(十一)——MongoDB与Mongoose
- FFmpeg-20160418-snapshot-bin
- 任何关于IOS app《地点闹钟》的问题欢迎在这里留言~
- Node.js开发入门(十)——使用cookie保持登录