leetcode第一刷_Minimum Path Sum
能够用递归简洁的写出,可是会超时。
dp嘛。这个问题须要从后往前算,最右下角的小规模是已知的,边界也非常明显,是最后一行和最后一列,行走方向的限制决定了这些位置的走法是唯一的,能够先算出来。然后不断的往前推算。
用distance[i][j]保存从当前位置走到最右下角所需的最短距离,状态转移方程是从distance[i+1][j]和distance[i][j+1]中选一个小的,然后再加上自身的。
代码非常easy理解,这就是dp的魅力。空间上是能够优化的,由于当前状态仅仅与后一行和后一列有关系。
class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
int erow = grid.size();
if(erow<=0) return 0;
int ecolumn = grid[0].size();
if(ecolumn<=0) return 0;
if(erow==1&&ecolumn==1) return grid[0][0];
vector<int> tpres(ecolumn, 0);
vector<vector<int> > distance(erow, tpres);
distance[erow-1][ecolumn-1] = grid[erow-1][ecolumn-1];
for(int i=erow-2;i>=0;i--)
distance[i][ecolumn-1] = distance[i+1][ecolumn-1] + grid[i][ecolumn-1];
for(int i=ecolumn-2;i>=0;i--)
distance[erow-1][i] = distance[erow-1][i+1] + grid[erow-1][i];
for(int i=erow-2;i>=0;i--){
for(int j=ecolumn-2;j>=0;j--){
distance[i][j] = min(distance[i+1][j], distance[i][j+1])+grid[i][j];
}
}
return distance[0][0];
}
};
leetcode第一刷_Minimum Path Sum的更多相关文章
- leetcode第一刷_Simplify Path
这道题的思路还是比較清晰的,用栈嘛,麻烦是麻烦在这些层次的细节上.主要有以下几个: ./和/:当前路径,遇到这样的,应该将后面的文件夹或文件入栈. ../:上一层路径.遇到这样的.应该做一次出栈操作, ...
- leetcode第一刷_Minimum Window Substring
好题.字符串.线性时间. 我认为第一次拿到这个题的人应该不会知道该怎么做吧,要么就是我太弱了..先搞清楚这个题要求的是什么.从一个长字符串中找一个字串,这个字串中的字符全然包括了另一个给定目标串中的字 ...
- leetcode第一刷_Minimum Depth of Binary Tree
非常easy的题目.只是还是认为要说一下. 最小深度.非常快想到bfs,层序遍历嘛.本科的时候实在是没写过多少代码,一開始竟然想不到怎么保存一层的信息.后来想到能够压入一个特殊的对象,每次到达这个对象 ...
- Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划)
Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划) 题目描述 已知一个正方形二维数组A,我们想找到一条最小下降路径的和 所谓下降路径是指,从一行到 ...
- LeetCode(113) Path Sum II
题目 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given ...
- [LeetCode] Binary Tree Maximum Path Sum 求二叉树的最大路径和
Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...
- leetcode–Binary Tree Maximum Path Sum
1.题目说明 Given a binary tree, find the maximum path sum. The path may start and end at any node in t ...
- 【LeetCode练习题】Minimum Path Sum
Minimum Path Sum Given a m x n grid filled with non-negative numbers, find a path from top left to b ...
- C++ leetcode Binary Tree Maximum Path Sum
偶然在面试题里面看到这个题所以就在Leetcode上找了一下,不过Leetcode上的比较简单一点. 题目: Given a binary tree, find the maximum path su ...
随机推荐
- 解析汽车B2C商城网站四种盈利模式
汽车已成为家庭的日常用品,汽车的配套设施也成为销售的热点,汽车B2C电子商城为行业营销的新平台,汽车B2C电子商务网站盈利的模式是怎样的?创新的盈利模式才能在行业竞争中生存. 资讯产品一体模式 网站的 ...
- Linux SSH端口转发
SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发 假定有三台主机A. ...
- hdoj 1395 2^x mod n = 1 【暴力】
策略 : 观察可知,1 或者是能被2整除的数都不会求余等于1, 仅仅须要推断一下是不是除1之外的奇数,在依次查找2^x(mod(n)) ? = 1就能够了 难点:假设每次都是在原来的基础上×2 再推断 ...
- NPC
这里的想说的NPC不是Non-Player-Controled,非玩家控制角色,而是Non-determinisitc Polynomial complete problem,它属于一类很特殊的问题, ...
- Android - 通过Intent启动Activity
通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...
- cocos2d-x 2.2.3 创建项目的方法
直接复制粘贴到txt文本,然后修改后缀为.bat,然后将bat文件放到tools\project-creator的目录下即可. :project_input @echo 请输入项目名称,按回车,例:H ...
- android IllegalStateException
由于android的线程非安全,直接在子线程中对UI进行更新是不被允许的,同样在常用的 适配器+List<E> 组合中,子线程直接更新与适配器绑定的List,便可能产生IllegalSta ...
- Windows Phone开发(41):漫谈关键帧动画之下篇
原文:Windows Phone开发(41):漫谈关键帧动画之下篇 也许大家已经发现,其实不管什么类型的动画,使用方法基本是一样的,不知道大家总结出规律了没有?当你找到规律之后,你会发现真的可以举一反 ...
- core graphics path
当UIKit无法满足画图需求的时候.就须要用到Core Graphics API.当中最普遍的就是path. 一些重要的概念 graphics context 能够理解成canvas.在ios里相应C ...
- NYOJ 47 河问题
时间限制:1000 ms | 内存限制:65535 KB 难度:5 描写叙述 在漆黑的夜里,N位旅行者来到了一座狭窄并且没有护栏的桥边.假设不借助手电筒的话,大家是不管怎样也不敢过桥去的.不幸的是 ...