给定一个三角形,从顶部到底部找到最小路径和。 每个步骤,您可以移动到下面的行上的相邻数字。
2017-10-11 10:54
429 查看
本题源自leetcode
---------------------------------------------------------------------------
从下往上遍历,上一层节点为下一层相邻节点的最小值加上当前节点。最后返回顶层节点
int minimumTotal(vector<vector<int> > &triangle) {
int len=triangle.size();
if(len==0)
return 0;
for(int i=len-2;i>=0;i--){
for(int j=0;j<i+1;j++){
//当前节点为,当前节点加上下一层节点左右相邻的最小值
triangle[i][j]+=(triangle[i+1][j]<triangle[i+1][j+1] ? triangle[i+1][j]:triangle[i+1][j+1]);
}
}
return triangle[0][0];
}
---------------------------------------------------------------------------
从下往上遍历,上一层节点为下一层相邻节点的最小值加上当前节点。最后返回顶层节点
int minimumTotal(vector<vector<int> > &triangle) {
int len=triangle.size();
if(len==0)
return 0;
for(int i=len-2;i>=0;i--){
for(int j=0;j<i+1;j++){
//当前节点为,当前节点加上下一层节点左右相邻的最小值
triangle[i][j]+=(triangle[i+1][j]<triangle[i+1][j+1] ? triangle[i+1][j]:triangle[i+1][j+1]);
}
}
return triangle[0][0];
}
相关文章推荐
- 给定一个充满非负数的网格,找到从左上到右下的路径,最小化沿其路径的所有数字的总和。只能向下或向右移动。
- 给定一个二叉树,找到最大路径和。该路径可以在树中的任何节点处开始和结束。
- 给定一个整数数组,两个数字的返回索引将它们加到一个特定的目标中。 您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。
- 给定n个数,每个都可以使用无数次,用这些数的和 是否可以组成一个给定的数字
- 新浪微博 陈利人 面试题 给定k个数组,每个数组有k个整数。每个数组中选取一个整数,一共k个整数,取其和,一共可以得到k^k个和。给出方法,求得这k^k个和中,最小的k个。
- 牛牛和15朋友来玩打土豪分田地的游戏,牛牛决定让你来分田地,地主的田地可以看成是一个矩形,每个位置有一个价值。分割田地的方法是横竖各切三刀,分成26份,作为领导干部,牛牛总是会选择其中总价值最小的一份田地,作为牛牛最好的朋友,你希望牛牛取得的田地价值和尽可能大,你知道这个值最大可以是多少吗? 输入两个整数n和m(1≤n,m≤75)表示田地的大小,接下来n行,每行包括m个0-9之间的数字,表示每块
- 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组A,同时给定
- (动态规划)给定三角形,找到从上到下的最小路径总和
- 给定一个填充非负数的m×n网格,找到一条从左上到右下的路径,这个路径将所有数字的总和最小化。
- LeetCode试题之““给定一个正整数A,找到最小的正整数B,它的每一个数字的乘法等于A。””
- 给定一个整数,并允许将其删除n个数字,使得值最小,例:data:178593, 删除一个数字,result:17593
- 61. 从1到n,共有n个数字,每个数字只出现一次。从中随机拿走一个数字x,请给出最快的方法,找到这个数字。如果随机拿走k(k>=2)个数字呢?[find k missing numbers from 1 to n]
- 在excel中,有时输完数字,数字的格格左上角出现一个绿色小三角形,而且,选中它,求和,求不了,右下角只显示计数值,不显示求和等?单元格属性更改为“数值”也不可以
- 给定一个数字列表,返回其所有可能的排列。 注意事项 你可以假设没有重复数字。
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 一个只由字母数字字符和破折号组成的字符串S. 该字符串被N个破折号分成N + 1个组。 给定数字K,使得每个组包含完全K个字符,除了第一个组可能少于K
- 给定一棵二叉树,每个结点包含一个值。打印出所有满足以下条件的路径: 路径上结点的值加起来等于给定的一个值。注意:这些路径不必从根结点开始。
- 给定一个带通配符问号的数W,问号可以代表任意一个一位数字。 再给定一个整数X,和W具有同样的长度。 问有多少个整数符合W的形式并且比X大?
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 【算法】(遇到的问题)给定一个数组,找出不在数组中的最小的那个数字