动态规划——triangle空间复杂度O(n)
来源:互联网 发布:java首页登录开发注意 编辑:程序博客网 时间:2024/06/03 17:10
仍是数字三角形问题,求从三角形顶端到最底层最小路径和。
题目要求空间复杂度O(n),那么就要将二维数组压缩为一维。因DP中历史状态只能通过当前状态影响下一个状态,所以压缩数组是可行的。
数字三角形如下:
[ [2], [3,4], [6,5,7], [4,1,8,3]]
import java.util.*;public class Solution { public int minimumTotal(ArrayList<ArrayList<Integer>> triangle) { if(triangle == null||triangle.size() == 0) return 0; //int [][]temp=new int [triangle.size()][triangle.size()]; //压缩数组temp: int []temp=new int[triangle.size()]; for(int col=0;col<triangle.size();col++) { temp[col]=triangle.get(triangle.size()-1).get(col); } for(int i=triangle.size()-2;i>=0;i--) { for(int j=0;j<=i;j++) { int min= temp[j]<temp[j+1]?temp[j]:temp[j+1]; temp[j]=min+triangle.get(i).get(j); } } return temp[0]; }}
0 0
- 动态规划——triangle空间复杂度O(n)
- 动态规划算法(微软一面笔试题:股票交易,O(N)时间复杂度O(1)空间复杂度)
- 最长公共字序列 动态规划 空间复杂度o(min{n,m})带打印
- 动态规划求数组中和最大字串的值 以及 字符串的循环移位(要求空间复杂度O(1),时间复杂度O(n))
- 时间复杂度O(n),空间复杂度O(1)的排序
- 时间复杂度为O(n),空间复杂度为O(1)
- O(N)时间复杂度、O(1)空间复杂度 构造数组
- 最长递增子序列的求解(O(n*n),O(nlogn))——动态规划
- LCS_poj1458 Common Subsequence_空间复杂度O(n)
- 数据结构——算法之(017)( 如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1))
- 0/1背包问题动态规划 空间复杂度是o(C)
- 动态规划;漂亮打印问题;时间复杂度O(n方); 思考方法记录在内;
- 求数组的最大子段和,动态规划 时间复杂度O(n)
- 算法:动态规划之金矿问题(时间复杂度O(n*w))
- 13.1—动态规划—Triangle
- 最长回文子串—动态规划和Manacher算法(0(n)时间复杂度
- 动态规划—Problem O
- 如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 关于android layout的一些理解
- css3笔记
- 一个简单的问题(域名解析了访问不到的问题)
- 133_Activity调用Service方法
- 用CFree写的Windows SDK 画线程序
- 动态规划——triangle空间复杂度O(n)
- hdu1024 Max Sum Plus Plus dp
- 134_Activity给Service发消息
- java面向对象思想笔记
- poj 3070
- 32bit程序在64bit操作系统下处理重定向细节
- JDK8新特性--Stream
- MIT6.828 Lab2: 第3部分 Kernel Address Space
- HDU1102 Constructing Roads